c# – 异常越过Application.ThreadException和AppDomain.Current
我遇到了应用程序挂起的问题,并给出了默认的“请告诉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?
另外,您没有说出有什么类型的应用程序有问题 – Application.ThreadException只影响WinForms线程,所以如果这不是GUI应用程序,它就没用了. (参见MSDN documentation中的备注部分) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- FlashBuilder4.7非正常关闭导致不能启动的解决
- ruby-on-rails – 如何检查HTTParty生成的完整URL?
- cocos2dx 3.3 + lua 学习笔记(04)--- 动作回调、函数回调、
- Flutter基础—第一个Flutter实例
- SQLite学习笔记(三)
- react-native – 为Android和iOS开发组件的正确方法是什么?
- entity-framework – 如何调用Oracle函数,使用LINQ to Enti
- reactjs – React 0.13 this.getDOMNode()等价于React.find
- 关于C#Generic Collection的问题
- 命令行编译工具mxmlc