我正在尝试使用Task.ContinueWith
withTaskContinuationOptions.AttachedToParent
来执行延续任务,例如
Task outerTask = new Task(() => Console.WriteLine("Outer"));
Task innerTask = outerTask.ContinueWith(t =>
{
Thread.Sleep(500);
Console.WriteLine("Inner");
},
TaskContinuationOptions.AttachedToParent | TaskContinuationOptions.OnlyOnRanToCompletion);
outerTask.Start();
outerTask.Wait();
Console.WriteLine("Outer done");
此代码的输出是
Outer
Outer done
Inner
但我期望/试图实现的是
Outer
Inner
Outer done
是否可以用于AttachedToParent
阻止外部任务完成,或者AttachedToParent
仅对嵌套任务有效?
编辑:
我想要实现的是我想在outerTask
成功完成后运行延续任务。我想outerTask
将异常传播innerTask
给调用者,而不必处理innerTask
. 如果outerTask
失败,它应该立即抛出异常(outerTask.Wait()
不调用innerTask
)。