首页 新闻 赞助 找找看

.net4.0 窗口程序在Debug下正常运行,在Release下出现 0xc0000005 错误,请问我做错了什么?

0
悬赏园豆:10 [已关闭问题] 关闭于 2011-07-15 01:14

我使用C#在.net 4.0 环境下开发Forms程序,在VS2010下调试一切正常,但是使用Release出现以下错误:

检测到FatalExecutionEngineError.

运行时遇到了错误。此错误的地址为 0x791a0051,在线程 0x101c 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。

程序中用到了kernel32.dll,怀疑是DLL声明有错,请问应该如何修改?

 [System.Security.SuppressUnmanagedCodeSecurity]       

 [DllImport("kernel32")]        

private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);

[System.Security.SuppressUnmanagedCodeSecurity]       

 [DllImport("kernel32")]       

 public static extern bool QueryPerformanceCounter(ref long PerformanceCount);


问题补充:

/// /// 检查当前线程是否存在消息队列 /// [System.Security.SuppressUnmanagedCodeSecurity] [DllImport("User32.dll", CharSet = CharSet.Auto)] static extern bool PeekMessage(out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags); ///

/// 检查当前线程是否存在消息队列 /// public static bool IsAppStillIdle 

 {

 get 

 { Message msg; return !PeekMessage(out msg, IntPtr.Zero, 0, 0, 0);  } }

还使用了以下的DLL。

天  空的主页 天 空 | 初学一级 | 园豆:200
提问于:2011-07-14 23:55
< >
分享
所有回答(1)
0
 运行时遇到致命错误。错误的地址是在0x6a9080d9,线程0x170。错误代码是0xc0000005。这个错误可能是在CLR中或在不安全的或非用户代码验证的部分bug。这种错误的常见来源包括用户数据封送处理COM或PInvoke的错误,这可能会损坏堆栈。 
gyy_rt | 园豆:202 (菜鸟二级) | 2015-09-21 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册