У меня есть простой код для воспроизведения:
var taskTest = Task.Factory.StartNew(() =>
{
System.Threading.Thread.Sleep(5000);
}).ContinueWith((Task t) =>
{
Console.WriteLine("ERR");
}, TaskContinuationOptions.OnlyOnFaulted);
try
{
Task.WaitAll(taskTest);
}
catch (AggregateException ex)
{
foreach (var e in ex.InnerExceptions)
Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace);
}
Однако я получаю неожиданное исключение TaskCanceledException, которое выдается в блоке try catch (он находится в объекте AggregateException InnerExceptions).«Задача была отменена».
Почему я получаю это исключение?Продолжение для задачи никогда не запускается, оно не создавало исключений, но я все еще получаю совокупное исключение при ожидании ....
Я надеюсь, что кто-то может объяснить, как это имеет смысл для меня :)