私は以下のような非同期メソッドを実行しました
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