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 に答える