2

Я пытаюсь преобразовать байт [] в структуру, содержащую массив структуры, содержащий массив.Почему Marshal.PtrToStructure с вложенными массивами генерирует ExecutionEngineException?

Что-то вроде этого:

[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.

Пожалуйста, помогите. Я потерян.

+0

Это делает невероятно мало смысла, трудно представить, как можно преобразовать эту структуру в строку. –

ответ

1

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

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

Смежные вопросы