【发布时间】:2014-09-14 15:06:33
【问题描述】:
我有一个任务,如果发生异常,它会取消正在使用 sme 取消令牌的任务并引发异常:
var cancellationTokenSource = new CancellationTokenSource();
var task1 = Task.Factory.StartNew(
() =>
{
try
{
// Do work
}
catch (Exception exception)
{
cancellationTokenSource.Cancel();
// rethrow the error
throw;
}
},
cancellationTokenSource.Token,
TaskCreationOptions.None,
taskScheduler);
我有另一个 task3(返回任务)在 task1 和 task2 上继续,并使用相同的取消令牌:
return task3 =
Task.Factory.ContinueWhenAll(
new[] { task1, task2 },
tasks =>
{
// Do work
},
cancellationTokenSource.Token,
TaskContinuationOptions.None,
this.taskScheduler).Unwrap();
一旦 task1 被取消,所有具有相同取消令牌的任务也会被取消。 需要获取task1抛出的内部异常,怎么做?
【问题讨论】: