Почему 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 ответ

Похоже, что это исключение не связано непосредственно с маршалингом вышеприведенной структуры.

Пожалуйста, взгляните на свой код для перекрестного доступа к тому же экземпляру другим потоком.

Другие вопросы по тегам