【发布时间】:2016-09-30 17:33:52
【问题描述】:
在下面的代码上调用await RunAsync(); 时,我希望TaskContinuationOptions.OnlyRanToCompletion 继续运行,但是OnlyOnCanceled 继续被调用(产生调试输出“任务取消”)。
为什么?
private static async Task RunAsync()
{
try
{
await Task.Run(() => DoWork())
.ContinueWith(
(t) =>
{
if (t?.Exception != null)
{
throw t.Exception;
}
}, TaskContinuationOptions.OnlyOnFaulted
).ContinueWith(
(t) =>
{
Debug.WriteLine("Task canceled.");
}, TaskContinuationOptions.OnlyOnCanceled
).ContinueWith(
(t) =>
{
Debug.WriteLine("Task completed.");
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}
private static void DoWork()
{
Thread.Sleep(1000);
}
【问题讨论】:
标签: c# async-await task continuations cancellation