Я пытаюсь удалить подписку на событие Tick в IL Code, чтобы оно никогда не срабатывало.
Вот код IL:
IL_0e19: ldftn instance void App.Framework.MainForm::mTimer_Tick(object, class [mscorlib]System.EventArgs)
IL_0e1f: newobj instance void [mscorlib]System.EventHandler::.ctor(object, native int)
IL_0e24: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Timer::add_Tick(class [mscorlib]System.EventHandler)
IL_0e29: ldarg.0
Так что я подумал, что я должен иметь возможность удалить последние 2 строки, чтобы удалить подписку, и все должно быть в порядке.
IL_0e24: callvirt instance void [System.Windows.Forms]System.Windows.Forms.Timer::add_Tick(class [mscorlib]System.EventHandler)
IL_0e29: ldarg.0
Я успешно компилирую код IL с:
ilasm.exe c:\Framework.il /32bitpreferred /dll
Теперь, когда я пытаюсь запустить программу, выдается исключение:
System.InvalidProgramException: JIT Compiler encountered an internal limitation.
Если яскомпилируйте IL без каких-либо модификаций, после чего программа запустится без каких-либо исключений, поэтому изменения вносятся.