from:http://blog.csdn.net/chichaodechao/article/details/8294922

在开发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

{

}

}

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

本文结束。

参考:

http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html(重要)

http://hi.baidu.com/ymwang/blog/item/07b1b20eab9cdde537d12265.html(重要)

http://www.cnblogs.com/xclw/archive/2009/09/29/1576436.html

http://www.cnblogs.com/dudu/archive/2006/05/07/393446.html

http://hi.baidu.com/xiejl/blog/item/98743c1f161cafc1a686697e.html

http://topic.csdn.net/t/20050304/22/3825910.html

http://www.yesky.com/258/1653758.shtml

http://www.cnblogs.com/cgzwwy/archive/2008/08/31/1280597.html

走向地狱的途中,不小心走了程序员这条路,路上一个个黑心的老板,和暗无天日的加班,我才发现,通往地狱的路径中,我们这行是最短的。

 
 
 
 
 

【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1的更多相关文章

  1. c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0);

    本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit ...

  2. 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)

    转载自:   DGPLM博客 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)

  3. Mac 应用程序不能打开解决方法

    Mac 应用程序不能打开解决方法 关键是 文件原本是可执行文件,由于权限丢失,才变成了类型不明的文件,导致软件无法打开. 参考: https://www.macbl.com/article/tips/ ...

  4. MySQL安装配置最后时未响应解决方法

    安装MySQL出示未响应,一般显示在安装MySQL程序最后一步的2,3项就不动了. 这种情况一般是你以前安装过MySQL数据库服务项被占用了.解决方法:一种方法:你可以安装MySQL的时候在这一步时它 ...

  5. C#调用dll提示"试图加载格式不正确的程序"原因及解决方法

    转载:https://blog.csdn.net/songyi160/article/details/51354660 程序在32位操作系统上运行正常,在64位操作系统上运行读卡功能提示”试图加载格式 ...

  6. Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!

    当我们搞定DataSnap后,我们进入客户端程序开发阶段了,我们建立了客户端模块后,打算按照刚才开发服务器的步骤开发客户端程序,随后加入了DBExpress的TSQLDataSet,设定数据库连接后, ...

  7. Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!

    当我们成功创建了使用DBExpress的DataSnap的服务器和客户端程序后,我们关闭了当前工程,当我们再次打开时候,有可能会出现这样的问题: 问题原因:这个问题是因为当前工程组默认启动的是客户端工 ...

  8. 'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件—解决方法

    Windows键 + R → 输入cmd → 输入adb,提示“adb不是内部或外部命令,也不是可运行的程序 或批处理文件“,错误信息如下: 解决方法: 此电脑(右击)→ 属性 → 高级系统设置 → ...

  9. C# WinForm 中Label自动换行 解决方法

    在TableLayoutPannel中放着一些Label如果把Label的AutoSize属性设成True的话,文字超过label长度时就会自动增加,直到后面的字出窗体以外设置成False时,一旦到达 ...

随机推荐

  1. ab测试swoole和ngixn+php-fpm对比

    做个swoole http_server和ngixn+php7-fpm测试 nginx swoole卓越的性能让我惊呆了   如需应用可nginx反代, swoole作为http_server, 不用 ...

  2. wordpress:搭建个人博客

    如果是自己玩可以使用虚拟机练习一下,想放到线上就买台服务器 安装Mysql 新买的云服务器,需要检测系统是否自带安装mysql yum list installed | grep mysql 如果发现 ...

  3. LVS 之ARP

    原理 工作过程 主机A的IP地址为:192.168.1.1  MAC地址为:0A-11-22-33-44-01: 主机B的IP地址为:192.168.1.2  MAC地址为:0A-11-22-33-4 ...

  4. java三大特性--继承

    定义: 继承就是子类继承父类的特征和行为,使得子类具有父类的各种属性和方法,使得子类具有父类相同的行为. 继承的好处: 有效实现代码复用,避免重复代码的出现. 让类与类之间产生了关系,是多态的前提. ...

  5. 手机号是SIM卡的号呢,还是买手机时就带的

    可以用原来的号码!把原来的卡装在新手机里就可以了,你的号码没有改变! 手机的号是由sim卡来决定的! 但是卡上的号码显示的是卡的一些信息! 你不用去理会它! 全文:http://iask.sina.c ...

  6. 使用BFG移除git库中的大文件或污点提交

  7. C++ - 定义无双引号的字符串宏

    在某些特殊场合下,我们可能需要定义一个字符串宏,但又不能用双引号 比如像这样 #define HELLO hello world 如果我们只是简单的展开HELLO,肯定会无法编译 std::cout ...

  8. 4、搭建Python环境

    搭建Python环境 Linux环境 大多Linux发行版均默认安装了Pthon环境.如想下载不同的版本,可到www.python.org下载.软件安装方法参照Linux软件安装. 输入Python可 ...

  9. inet_ntoa内存问题

    最近写的一个程序,大致用到以下代码: WSADATA wsaData; WSAStartup (MAKEWORD( 2, 2 ),&wsaData); struct addrinfo *aiL ...

  10. Android典型界面设计(3)——访网易新闻实现双导航tab切换

    一.问题描述 双导航tab切换(底部区块+区域内头部导航),实现方案底部区域使用FragmentTabHost+Fragment, 区域内头部导航使用ViewPager+Fragment,可在之前博客 ...