我正在使用以下
Task.Factory.StartNew(() => DoPrintConfigPage(serial));
然后我调用的函数看起来像这样
private void DoPrintConfigPage(string serial)
{
//do printing work
}
我的问题是在线程内抛出异常并且没有被处理。
我已经尝试将它包装在 try catch
try
{
Task.Factory.StartNew(() => DoPrintConfigPage(serial));
}
catch (Exception ex) { }
但它仍然没有捕捉到错误,从而导致应用程序崩溃。
如何在主线程中捕获异常以便处理它们?
更新
我已经进行了下面建议的更改,但仍然说异常未处理
var task = Task.Factory.StartNew(() => DoPrintConfigPage(serial))
.ContinueWith(tsk =>
{
MessageBox.Show("something broke");
},TaskContinuationOptions.OnlyOnFaulted);
然后在我的DoConfigPage
我添加了另一个尝试捕获。
在这个捕获中,现在它正在崩溃并说抛出的异常未处理,我错过了什么?
private void DoPrintConfigPage(string serial)
{
try
{
//call the print function
}
catch (Exception ex)
{
throw ex; //it is crashing here and saying it is unhandled
}
}
我还尝试了 Eric J. 的建议,结果相同
var task = Task.Factory.StartNew(() => DoPrintConfigPage(serial));
try
{
task.Wait();
}
catch (AggregateException ex) { MessageBox.Show("something broke"); }