Lors de l'appel await RunAsync();
sur le code ci-dessous, je m'attendrais à la poursuite avec TaskContinuationOptions.OnlyRanToCompletion
continuer à courir, mais la continuation OnlyOnCanceled
est appelée (donnant la sortie de débogage "Tâche annulée").Pourquoi la suite OnlyOnCanceled est-elle appelée?
Pourquoi?
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);
}