在主线程中捕获线程的异常
本文关键字:线程 异常 | 更新日期: 2023-09-27 17:49:39
我有一个线程:
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
中,什么也不会发生!
我怎样才能解决这个问题?
如果你使用的是旧版本的Visual Studio或者不想使用Tasks,你可以使用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
}
}