+-
C#-多线程,如果线程崩溃,应用程序将发生什么
我是多线程应用程序的新手.在开始研究之前,我几乎没有疑问.
谁能消除这些疑问?

>如何在多线程应用程序中处理异常?
>如果任何一个线程中有任何异常,整个应用程序都会出现
下?还是所有其他线程将继续?

最佳答案

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#-多线程,如果线程崩溃,应用程序将发生什么 - 乐贴网