+-

我是多线程应用程序的新手.在开始研究之前,我几乎没有疑问.
谁能消除这些疑问?
谁能消除这些疑问?
>如何在多线程应用程序中处理异常?
>如果任何一个线程中有任何异常,整个应用程序都会出现
下?还是所有其他线程将继续?
最佳答案
How to handle exceptions in multithreaded application?
最好的方法是在线程内部,但有时例如. (线程池)这很难.处理未处理的异常取决于应用程序的类型:
> WPF:使用Application.DispatcherUnhandledException
>控制台或服务:使用AppDomain.UnhandledException
ASP.NET,WinForms等都有自己的机制.
但请考虑:特别是在进行开发以允许默认处理并落入调试器时(添加if(Debugger.IsAttached){Debugger.Break();}对定义永久断点可能非常有帮助)
If there is any exceptions in any 1 thread, will the whole application will come down?
这取决于.在ASP.NET中:否(如果启用了调试,您将看到“死亡黄屏”,否则将显示500服务器错误结果);在其他主机中:视情况而定(但通常答案是“是”,该过程将终止).
在.NET版本之间,此操作的某些细节已更改-通常会变得更严格,因此您需要进行研究.最后:在.NET 4中,当然也可能在之前,某些异常(例如StackOverflowException)无法捕获,因为没有可靠的方法来抛出一致的进程状态.
点击查看更多相关文章
转载注明原文:C#-多线程,如果线程崩溃,应用程序将发生什么 - 乐贴网