2

我已经执行了一个异步方法,如下所示

System.Threading.Tasks.Task.Factory.StartNew(() => AddAttachment(information.Subject,
information.DocumentId.ToString(),
information.Sender,list.Name));

如何处理方法内部产生的异常AddAttachment()

4

3 回答 3

4

您可以创建一个延续任务来检查您创建的任务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
        }
    });
于 2012-12-20T16:25:38.260 回答
1

最简单的方法是创建一个延续并使用OnlyOnFaulted选项:

Task.Factory.StartNew(() => AddAttachment(information.Subject, information.DocumentId.ToString(), information.Sender,list.Name))
            .ContinueWith(t => HandleException(t.Exception),
                          TaskContinuationOptions.OnlyOnFaulted);

这样,只有在原始任务引发异常时才会调用延续。

于 2012-12-20T16:31:34.180 回答
0

Task.Exception属性将在任务完成后包含异常并出现异常,有关更多详细信息,请查看

var task = Task.Factory.StartNew(...
...
task.Exception
于 2012-12-20T16:18:47.013 回答