C# 多线程,如果线程崩溃,应用程序会发生什么
我是多线程应用程序的新手。在开始工作之前,我几乎没有什么疑问。 有人能澄清这些疑问吗C# 多线程,如果线程崩溃,应用程序会发生什么,c#,multithreading,.net-3.5,C#,Multithreading,.net 3.5,我是多线程应用程序的新手。在开始工作之前,我几乎没有什么疑问。 有人能澄清这些疑问吗 如何处理多线程应用程序中的异常 如果在任何一个线程中有任何异常,整个应用程序都会出现吗 下来?或者所有其他线程都将继续 如何处理多线程应用程序中的异常 最好的方法是在线程内,但有时(线程池)这很难。处理未处理的异常取决于应用程序的类型: WPF:使用 控制台或服务:使用 ASP.NET,WinForms。。。有自己的机制 但是请考虑:特别是在开发允许默认处理并落入调试器时(添加if(debugger.IsA
- WPF:使用
- 控制台或服务:使用
if(debugger.IsAttached){debugger.Break();}
对于定义永久断点非常有帮助
如果在任何一个线程中有任何异常,整个应用程序会停止运行吗
这取决于。在ASP.NET中:否(如果启用了调试,您将看到死亡的黄色屏幕,否则将导致500服务器错误);在其他主机中:取决于(但通常答案是是是,进程将终止)
在.NET版本之间,这方面的一些细节已经发生了变化–通常会变得更加严格,因此您需要进行研究。最后:在.NET 4中,当然,也可能在之前,出现了某些例外情况(例如,
StackOverflowException
)无法捕获,因为如果抛出一致的进程状态,则没有可靠的方法使其保持一致。如果使用TPL,则可以使用聚合异常。此聚合异常是异常的集合,您可以循环遍历这些异常,以查看哪个线程执行失败。更多信息可在此处找到。@Anonymous您可以删除吗orate?@Matt做一些ASP.NET编码,除非你把一切都做好,否则你会看到很多。这是ASP.NET错误显示。谢谢。我是VB.NET编码员,所以我只见过BSOD(太频繁了!)