При вызове await RunAsync();
по нижеследующему коду я ожидаю продолжение с TaskContinuationOptions.OnlyRanToCompletion
продолжением для запуска, однако вызывается вызванное продолжение OnlyOnCanceled
(что дает отладочный вывод «Задача отменена»).Почему вызов 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);
}