首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.ExecutionEngineException被抛出

System.ExecutionEngineException被抛出
EN

Stack Overflow用户
提问于 2011-03-10 14:05:30
回答 1查看 4K关注 0票数 4

当执行这一行代码时,将引发此异常。

代码语言:javascript
运行
复制
retobj = Marshal.PtrToStructure( buffer, anytype );

我不知道是什么导致了这一点,因为我试图运行的应用程序在这里的其他开发人员机器上运行得很好。

代码语言:javascript
运行
复制
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紧凑型框架,但似乎没有什么可行的,有人知道解决这个问题的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-08-27 05:04:10

如果您要调试您的程序,您将发现下面的行抛出异常:

代码语言:javascript
运行
复制
 retobj = Marshal.PtrToStructure(buffer, anytype); 

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

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

代码语言:javascript
运行
复制
- solved by prefixing your struct with 

StructLayout(LayoutKind.Sequential,Pack = 1)

  1. 嵌套数组。

代码语言:javascript
运行
复制
- solved by prefixing array with

MarshalAs(UnmanagedType.ByValArray,SizeConst = 512)

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5260701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档