Task.Factory.StartNew出现异常
本文关键字:异常 StartNew Factory Task | 更新日期: 2023-09-27 18:29:47
我正在使用Task.Factory.StartNew使长处理服务调用离开UI线程。然而,当我加载应用程序时,我会得到以下异常
等待任务或访问其exception属性都没有观察到任务的异常。因此,终结器线程重新引发了未处理的异常。
Task.Factory.StartNew(() => this.InitializeViewModel(myViewModel));
private void InitializeViewModel(IModel myViewModel)
{
lock (viewModelLock)
{
myViewModel.MyContext = this.MyContext; // this will set the MyContext property which in turn makes some service calss
}
}
这里我不能使用task.wait()b'coz,那么它将导致UI线程上的等待。。
我该如何避免这种异常情况??
谢谢。
作为第一个解决方法/调试帮助将lock (...)
封装在try-catch
中,并在catch
-块中设置断点-这样您应该能够看到问题
对于Task.Wait
的问题,您可以使用ContinueWith方法来获取异常:
var task = Task.Factory.StartNew(() => this.InitializeViewModel(myViewModel));
task.ContinueWith(o => MyErrorHandler(task.Exception), TaskContinuationOptions.OnlyOnFaulted);
不要忘记处理程序:
void MyErrorHandler(Exception error)
{
// handle the exception (log, or whatever)
}