gpt4 book ai didi

c# - Task.Factory.StartNew 抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 14:03:50 27 4
gpt4 key购买 nike

我正在使用 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() 因为它会导致 UI 线程等待..

我怎样才能避免这个异常??

谢谢。

最佳答案

作为第一个解决方法/调试帮助包装你的 lock (...)try-catch 里面并在 catch 中设置一个断点-Block - 这样你应该能够看到问题

关于 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)
}

关于c# - Task.Factory.StartNew 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com