我使用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。