InvalidProgramException при создании таймера с использованием делегата, созданного отражением
Этот код:
var returnType = GetDelegateReturnType (typeof (TimerCallback)); var methodParameters = typeof (TimerCallback).GetMethod ("Invoke"). GetParameters (). Select (x => x.ParameterType).ToArray (); var handler = new System.Reflection.Emit.DynamicMethod ("", returnType, methodParameters, typeof (ArgumentNullTest)); var generator = handler.GetILGenerator (); generator.Emit (System.Reflection.Emit.OpCodes.Ldloc, 1); generator.Emit (System.Reflection.Emit.OpCodes.Ret); var timerCallback = (TimerCallback) handler.CreateDelegate (typeof (TimerCallback)); var timer = новый таймер (timerCallback, ноль, 0, 0); var timer2 = новый таймер (o => { }, ноль, 0, 0);
бросает InvalidProgramException
при создании второго таймера. Что я делаю не так при создании TimerCallback
за отражение?