您可以使用在发生异常时执行操作的扩展方法。当任务出现故障时会发生这种情况。因此,如果它还有其他任务要继续,下一个可以检查上一个任务是否出错并记录异常。
我通常使用这种方法:
//If you want to chain more tasks..
public static Task<T> Continue<T>(this Task<T> task, Action<T> action)
{
if (!task.IsFaulted)
{
task.ContinueWith((t) => action(t.Result), TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion);
}
return task;
}
public static Task OnException(this Task task, Action<Exception> onFaulted)
{
task.ContinueWith(c =>
{
var excetion = c.Exception;
onFaulted(excetion);
},
TaskContinuationOptions.OnlyOnFaulted |
TaskContinuationOptions.ExecuteSynchronously);
return task;
}
所以你可以使用:
Task.Factory.StartNew(...).OnException(ex => Log(ex));
希望能帮助到你。