gpt4 book ai didi

c# - 抛出 System.ExecutionEngineException

转载 作者:行者123 更新时间:2023-11-30 12:52:06 34 4
gpt4 key购买 nike

执行这行代码时抛出异常

retobj = Marshal.PtrToStructure( buffer, anytype );

我不知道是什么原因造成的,因为我尝试运行的应用程序在此处的其他开发人员机器上运行良好。

public static object RawDeserialize(byte[] rawdatas, Type anytype) 
{
int rawsize = Marshal.SizeOf(anytype);

if (rawsize > rawdatas.Length)
{
return null;
}

IntPtr buffer = Marshal.AllocHGlobal(rawsize);
object retobj = null;

try
{
Marshal.Copy(rawdatas, 0, buffer, rawsize);
retobj = Marshal.PtrToStructure(buffer, anytype);
}
finally
{
Marshal.FreeHGlobal(buffer);
}

return retobj;
}

我已经多次尝试修复 .NET Compact Framework,但似乎没有任何效果,有人知道解决这个问题的方法吗?

最佳答案

如果您要调试程序,您会发现以下行会引发异常:

 retobj = Marshal.PtrToStructure(buffer, anytype); 

主要原因是编码工具不知道如何编码你的类型。这有很多可能的原因,我知道的最常见的两个是:

  1. 结构中的嵌套结构(任意类型)

    • 通过在结构体前加上

      解决

      [StructLayout(LayoutKind.Sequential, Pack = 1)]

  2. 嵌套数组。

    • 通过给数组加上前缀

      解决

      [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)]

希望对您有所帮助。

关于c# - 抛出 System.ExecutionEngineException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260701/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com