Теперь это в основном догадки, поскольку у нас едва хватает кода, чтобы сказать что-то наверняка:
А как насчет JiT Compiler?
Одна из его целей - обнаружение мертвого кода. Он вырезает код, который, как он предсказывает, не будет иметь эффекта. К сожалению, это все еще только компьютерная программа, поэтому случаются ложные срабатывания. Например, пытаясь форсировать OOM Exception для установок x32 Framework, мне пришлось изо всех сил пытаться исключить код , а не с помощью JiT:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OOM_32_forced
{
class Program
{
static void Main(string[] args)
{
//each short is 2 byte big, Int32.MaxValue is 2^31.
//So this will require a bit above 2^32 byte, or 2 GiB
short[] Array = new short[Int32.MaxValue];
/*need to actually access that array
Otherwise JIT compiler and optimisations will just skip
the array definition and creation */
foreach (short value in Array)
Console.WriteLine(value);
}
}
}
MessageBoxпредотвратит вырезание всей этой функции как мертвого кода. Вывод чего-либо на пользователя всегда считается «иметь эффект». Однако отдельные его части по-прежнему имеют право на обнаружение мертвого кода.
К сожалению, вы не предоставили нам минимальный, полный проверяемый пример. Поэтому мы не можем помочь вам разобраться в этом.