2

我正在尝试将 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。

请帮忙。我迷路了。

4

1 回答 1

1

看起来这个异常与上述结构的编组没有直接关系。

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

于 2013-11-13T09:38:17.350 回答