Почему Marshal.PtrToStructure с вложенными массивами генерирует исключение ExecutionEngineException?
Я пытаюсь преобразовать byte[] в структуру, которая содержит массив структуры, которая содержит массив.
Что-то вроде этого:
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct Util_VersionType
{
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.LPStr, SizeConst = 5000)]
public DataItemsString[] Data;
}
[StructLayout(LayoutKind.Sequential, Pack = 4)]
public struct DataItemsString {
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U1, SizeConst = 10)]
public System.Byte[] Value;
public System.UInt32 Validity;
}
Я использую Marshal.PtrToStructure
Иногда проблем нет, но примерно через 100 попыток CLR генерирует неуловимое исключение ExecutionEngineException.
Пожалуйста помоги. Я потерялся.
1 ответ
Похоже, что это исключение не связано непосредственно с маршалингом вышеприведенной структуры.
Пожалуйста, взгляните на свой код для перекрестного доступа к тому же экземпляру другим потоком.