捕获主线程中线程的异常

时间:2014-03-12 14:35:10

标签: c# multithreading exception-handling

我有一个帖子:

Thread mthread = new Thread(new ThreadStart(thread_main));
mthread.Start();

它启动函数thread_main

void thread_main()
{
    if (BotSuite.ImageLibrary.Template.Image(screendata, invdata).IsEmpty)
    {
        throw new Exception();
    }
}

这个异常应该在主线程中捕获!我在按钮事件处理程序中添加了一行。

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(ErrorHandler);

如果异常在主线程中,它会很有效,但如果它在mthread中没有任何反应!

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果您使用较旧的Visual Studio或不想使用任务,则可以使用Backroundworker。

    var worker = new BackgroundWorker();
    worker.DoWork += WorkerDoWork;
    worker.RunWorkerCompleted += WorkerRunWorkerCompleted;
    worker.RunWorkerAsync();

    private static void WorkerDoWork(object sender, DoWorkEventArgs e)
    {
        throw new Exception("my exception");
    }

    private static void WorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            //error handling
        }
    }