如果在辅助线程中发生异常,如何在主线程中捕获异常?

Ash*_*shu 6 .net c# multithreading

如果在辅助线程中发生异常,如何在主线程中捕获异常?

该场景的代码片段如下:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        Thread th1 = new Thread(new ThreadStart(Test));
        th1.Start();               
    }
    catch (Exception)
    { 

    }
}

void Test()
{
    for (int i = 0; i < 100; i++)
    {
        Thread.Sleep(100);

        if (i == 2)
            throw new MyException();
    }
}
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 3

您可以添加Application.ThreadException事件处理程序:

乔是对的。鉴于上面的 Windows 窗体代码,我假设是 Windows 窗体:

此事件允许 Windows 窗体应用程序处理 Windows 窗体线程中发生的未处理的异常。将事件处理程序附加到 ThreadException 事件来处理这些异常,这将使您的应用程序处于未知状态。如果可能,异常应该由结构化异常处理块来处理。

查看托管应用程序中的意外错误