主线程是否会捕获另一个线程引发的异常?

时间:2011-02-10 21:14:18

标签: c# multithreading exception

如果我有这样的代码:

try
{
    Thread t = new Thread(new ThreadStart(wc.LocalRunProcess));
    t.IsBackground = true;
    t.Start();
}
catch (Exception ex)
{
    //do something with ex
}

线程t抛出的异常是否会在catch块中被捕获?

2 个答案:

答案 0 :(得分:19)

没有。它不会捕获您的其他线程t中的任何异常。你必须在那个线程中捕获它们并适当地处理它们。

但是,我相信AppDomain的UnhandedException事件会报告它。

答案 1 :(得分:4)

看看System.ComponentModel.BackgroundWorker!它有例外和取消处理。