在阅读了有关任务和执行管理的信息后,我正在使用此代码来管理任务中引发的异常:
Task<Object> myTask = Task.Factory.StartNew<Object>(doTask, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default);
myTask .ContinueWith(task => afterTask(task), TaskScheduler.FromCurrentSynchronizationContext());
doTask 和 AfterTask 在哪里:
private <Object> doTask() {
throw new Exception("BOOM");
}
private afterTask(Task<Object> aTask) {
if (aTask.IsFaulted)
{
MessageBox.Show(aTask.Exception.InnerException.Message);
}
else //whatever
}
当抛出异常繁荣时,Visual Studio 会显示一条警报,通知尚未捕获到异常,但如果我继续执行,则在 afterTask 函数中处理异常。
这段代码是正确的还是我误解了任务的一些基本行为?有什么方法可以避免调试器发出未捕获到执行的警报?是不是有点烦...
提前致谢