关于c#:Exception超越了Application.ThreadException和AppDomain.CurrentDomain.UnhandledException

关于c#:Exception超越了Application.ThreadException和AppDomain.CurrentDomain.UnhandledException

Exception getting past Application.ThreadException and AppDomain.CurrentDomain.UnhandledException

我遇到了一个应用程序挂起的问题,并给了我默认的"请告诉Microsoft有关此问题"的弹出窗口,而不是应用程序中的"未处理的异常"对话框。

在应用程序代码中,Application.ThreadException和AppDomain.CurrentDomain.UnhandledException都被重定向到将错误日志写入磁盘,将屏幕快照保存到磁盘并显示友好对话框的方法。

但是,当发生此错误时,这三件事均不会发生。我得到的只是事件查看器中的代码:

EventType clr20e3,P1 myapp.exe,P2 4.0.0.0,P3 47d794d4,P4 mscorlib,P5 2.0.0.0,P6 471ebc5b,P7 15e5,P8 27,P9 system.argumentoutofrange,P10 NIL

鉴于该错误似乎仅在应用程序运行了几个小时后才发生,所以我想知道这是否可能是内存泄漏问题。我已经搜索了" clr20e3",但只设法找到了ASP.Net。我的应用程序是Windows Forms(.Net 2.0)exe,使用相当多的程序集-在C#和一些非托管C ++中。

我猜这也可能是错误处理方法中的错误-正如一些答案所暗示的,我可以尝试在错误处理程序的开始处进行日志记录(但是考虑到这无论如何我都要做的...)。

任何解决此问题的帮助将不胜感激-无论是解决方案,还是有关如何找出问题根源的建议。

更新:原始错误的根本原因是访问具有负索引的数组(即system.argumentoutofrange)。为什么这没有被捕获对我来说还是个谜,但是鉴于两个异常都被发送到了相同的处理代码,我想知道是否不存在这样的情况:(例如)两者都被调用并争用资源(例如,日志文件)?

我通过在错误处理代码中的任何其他操作之前执行EventLog.WriteEntry来证明了这一点。现在添加了一个标志来防止错误处理再次输入,我似乎不再有问题...


您是否检查过ArgumentOutOfRangeException是否从处理程序本身抛出? 可能值得对事件日志或异常处理程序条目处的跟踪进行简单的写入,并确认您确实在击中它。

编辑:可以在以下位置找到写入事件日志的信息:

http://support.microsoft.com/kb/307024


只是在这里黑暗中射击-ArgumentOutOfRangeException是否实际上是从异常处理程序中抛出的?

此外,您没有说出问题类型的应用程序-Application.ThreadException仅影响WinForms线程,因此,如果这不是GUI应用程序,那就没有用了。 (请参阅MSDN文档中的"备注"部分)


您是否多次调用Application.Run()? 这将显示您描述的相同符号。 您必须编写一个自定义ApplicationContext类作为解决方法。 仅调整了我的$ 0.02(根据通货膨胀)。


推荐阅读

    linux挂起任务命令?

    linux挂起任务命令?,系统,工作,信息,工具,地址,情况,暂停,数据,命令,进程,lin

    linux进入挂起的命令?

    linux进入挂起的命令?,系统,标准,设备,工作,暂停,命令,状态,信息,名称,邮箱,L

    linux设默认网关命令?

    linux设默认网关命令?,信息,地址,网关,网络,系统,状态,中心,命令,终端,路由,l

    linux终止挂起命令?

    linux终止挂起命令?,系统,传播,进程,命令,管理,程序,终端,结束,指令,操作系

    linux默认命令删除?

    linux默认命令删除?,系统,软件,名称,档案,命令,文件,目录,不了,电脑,文件夹,

    linuxrm命令默认?

    linuxrm命令默认?,系统,命令,档案,工作,文件,目录,名称,文件夹,选项,子目录,l

    linux命令默认加后缀?

    linux命令默认加后缀?,系统,文件,密码,通用,设备,命令,目录,后缀,表示,程序,l

    linux默认浏览器命令?

    linux默认浏览器命令?,环境,系统,发行,工程,工具,浏览器,软件,情况,网站,管

    linux默认压缩命令?

    linux默认压缩命令?,系统,名称,命令,文件,工具,软件,目录,选项,文件名,格式,l

    linux默认命令行字体?

    linux默认命令行字体?,系统,工具,等级,数字,百度,情况,代码,终端,字体,字符,l

    linux默认命令行模式?

    linux默认命令行模式?,系统,密码,工具,地方,设计,设备,服务,网络,终端,界面,l

    linux命令提示符默认?

    linux命令提示符默认?,系统,标准,信息,基础,代码,软件,美元,电脑,提示符,用

    linux命令和应用程序?

    linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,

    linux线程挂起命令?

    linux线程挂起命令?,系统,状态,信息,概念,管理,基础,时间,暂停,设计,数据,lin

    linux增加默认命令?

    linux增加默认命令?,地址,网络,系统,工作,管理,目录,命令,一致,服务,标准,lin

    linux默认安装命令?

    linux默认安装命令?,系统,工作,软件,命令,地址,基础,发行,信息,中心,在线,安

    linux查默认网关命令?

    linux查默认网关命令?,地址,系统,信息,网络,网关,终端,环境,命令,路由,机器,l