c#捕捉一个失败的线程

本文关键字:一个 失败 线程 | 更新日期: 2023-09-27 18:03:21

是否有一种方法可以在c#中最深处捕获终止线程?我现在有:

AppDomain.CurrentDomain.UnhandledException += new System.UnhandledExceptionEventHandler(App_ThreadException);

开头

~IOThread()
{
    Console.WriteLine(string.Format("IOThread destroyed at: {0}", DateTime.Now));
}

一个析构函数。

try
{
    Server.world.Tick();
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

try catch访问失败或null引用。某些东西导致处理线程停止,它不是一个无限循环,因为如果我在调试器中执行BreakAll,处理线程不在线程列表中。

任何帮助将非常感激,我甚至不能调试这个问题

c#捕捉一个失败的线程

首先AppDomain.CurrentDomain.UnhandledException没有"catch"任何东西。如果出现异常,应用程序仍然会崩溃。这个事件的存在是为了让你可以在崩溃之前做一些事情。

第二,你混淆了析构函数和终结式。

第三,如果在另一个线程中有一个未处理的异常-整个应用程序将崩溃。如果它没有崩溃——那只能意味着一件事——你的线程已经完成工作了。

正确地做到这一点的唯一方法是将catch(Exception)放在程序中创建的每个线程的根,包括线程池回调方法。

相关文章: