我已经执行了一个异步方法,如下所示
System.Threading.Tasks.Task.Factory.StartNew(() => AddAttachment(information.Subject,
information.DocumentId.ToString(),
information.Sender,list.Name));
如何处理方法内部产生的异常AddAttachment()
?
我已经执行了一个异步方法,如下所示
System.Threading.Tasks.Task.Factory.StartNew(() => AddAttachment(information.Subject,
information.DocumentId.ToString(),
information.Sender,list.Name));
如何处理方法内部产生的异常AddAttachment()
?
您可以创建一个延续任务来检查您创建的任务StartNew
:
Task outer = System.Threading.Tasks.Task.Factory.StartNew(() => AddAttachment(information.Subject, information.DocumentId.ToString(), information.Sender,list.Name))
.ContinueWith(task => {
if(task.IsFaulted)
{
AggregateException ex = task.Exception;
//handle exception
}
});
最简单的方法是创建一个延续并使用OnlyOnFaulted
选项:
Task.Factory.StartNew(() => AddAttachment(information.Subject, information.DocumentId.ToString(), information.Sender,list.Name))
.ContinueWith(t => HandleException(t.Exception),
TaskContinuationOptions.OnlyOnFaulted);
这样,只有在原始任务引发异常时才会调用延续。
Task.Exception属性将在任务完成后包含异常并出现异常,有关更多详细信息,请查看此
var task = Task.Factory.StartNew(...
...
task.Exception