首页 > 代码库 > window窗体程序意外崩溃,EventType clr20r3错误的解决方法

window窗体程序意外崩溃,EventType clr20r3错误的解决方法

EventType clr20r3, P1 ggreadcard.exe, P2 1.0.0.0, P3 51d3d283, P4 zljy.common, P5 1.0.0.0, P6 4fc6c236, P7 31, P8 28, P9 system.nullreferenceexception, P10 NIL.
要怎么解决呢!解决问题的办法是先要找到问题的根源。

在开发winform程序时,用到多线程,在服务器部署后运行,老是自动关才程序,症状描述如下:

在Windows Server 2003操作系统上,运行.Net 2.0或者3.5的应用程序时,会发现没有任何反应,到系统的事件查看器里会发现类似EventType clr20r3 P1....P2...PN的错误提示。

很可能的原因就是:应用程序出现了异常,而.net没有或者无法捕捉该异常,所以导致出现如下情况:

1.程序自动关闭。

2.此时去任务管理器中会看到一个DW20.exe的进程,不久会自动消失

3.到事件查看器里面会发现类似EventType clr20r3 P1....P2...PN的错误提示。

 

 

解决方法一:.在config文件中<configuration>     <runtime>         <legacyUnhandledExceptionPolicy enabled="true" />     </runtime></configuration>这样,主程序遇到未捕获异常不会强制关闭,但为了程序的稳定性与安全性,应该找出抛异常的地方,将其修改。

解决方法二:

         用到UnhandledExceptionEventHandler事件,通过这个事件,我们可以截获未捕获异常,并进行处理。

这个事件的事件参数UnhandledExceptionEventArgs e, 有两个属性,一个是ExceptionObject,这个属性返回为截获异常的对象实例。还有一个属性是IsTerminating,这个属性告诉我们这个异常是否会导致应用终止。这里需要说明的是,对于.Net1.1  .Net2.0及以上,情况是不一样的,.Net1.1 只有在主线程中的未捕获异常才会终止应用程序,而.Net2.0及以上版本则是始终终止应用程序。

      在主窗体main下,加         

AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);

并编码UnhandledExceptionEventHandler事件,

        static void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)

        {

            try

            {

                LogHelper.ErrorLog(e.ExceptionObject.ToString());//LogHelper是写日志的类,这里,可以直接写到文件里

            }

            catch

            {

            }

        }

    运行程序,异常捕获,找到了问题所在,对代码进行改写。

www.wonima.com 我尼玛世界上最好看的笑话图片网站

window窗体程序意外崩溃,EventType clr20r3错误的解决方法