为什么带有嵌套数组的Marshal.PtrToStructure会抛出ExecutionEngineException?

时间:2013-11-13 06:39:42

标签: c# .net marshalling unmarshalling 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 个答案:

答案 0 :(得分:1)

看起来这个Exception与直接编组上述结构无关。

请查看您的代码,以便通过其他线程交叉访问同一个实例。