回答
您可以收听Application.ThreadException
和AppDomain.UnhandledException
事件以捕获线程未捕获的异常。但最好的办法是在线程中捕获并处理异常。这应该是正常关机/记录的最后手段。
这取决于您定位的.NET框架。
在1.1及更低版本中,子线程抛出的异常只有在try/catch块之外运行时才会被转发到主线程。
在2.0及更高版本中,此行为已更改:线程将被终止,并且异常将不被允许继续进行。
无论如何,您可以像处理单线程应用程序一样处理线程内的异常。
查看http://msdn.microsoft.com/en-us/library/ms228965(v=VS.90).aspx仅供参考。
子线程抛出的异常将会终止从.NET 2开始的整个程序。 – cdhowie 2010-11-16 07:22:40
刚刚尝试过。 cdhowie是正确的。 – user496949 2010-11-16 07:24:09
“转发给主线程”是什么意思?你能举一个例子说明这将如何工作以及这些例外情况如何被发现? – 2010-11-16 07:24:45
没有,考虑下面的代码:
try
{
var t = new Thread(()=>
{
Thread.Sleep(5000);
throw new Exception();
});
t.Start();
//t.Join();
}
catch
{
//you can't deal with exception here
//even though you uncomment `t.Join`
}
处理其中的例外“属于”子线程例外。
- 1. 在多线程环境
- 2. 实现多线程环境
- 3. 在多线程环境中使用CList
- 4. IShellItemImageFactory :: GetImage卡在多线程环境
- 5. Python不能在多线程环境
- 6. Shiro在多线程环境中
- 7. 在多线程环境中使用Log4Net
- 8. 在.net中调试多线程环境
- 9. 在多线程环境中使用TraceSource
- 10. 在多线程环境中重绘
- 11. 在多线程环境(嵌入式v8)
- 12. 在多线程环境中使用NLog
- 13. JSF语言环境例外
- 14. 多线程和多处理器环境对线程有用吗?
- 15. 在Arduino环境中启用例外
- 16. 多线程环境中的Ninject拦截
- 17. 多线程环境中的领域
- 18. flex/lex yacc/bison多线程环境
- 19. 多线程环境下的rocksdb
- 20. scala:多线程环境中的apache httpclient
- 21. 多线程环境中的mkdirs()函数
- 22. 多线程环境中的JDBC事务
- 23. 在多线程环境下在eclipse中进行远程调试
- 24. Clojure在线程主例外
- 25. OpenGL的多种环境中多线程Java应用程序
- 26. 在多环境
- 27. 线程池例外
- 28. Singleton模式在多线程环境中是否存在问题?
- 29. 在多进程多处理器环境
- 30. redis在线程环境中不一致
您使用的是什么技术? WinForms,WPF,控制台,ASP.net? – 2010-11-16 07:27:08