Ожидание задачи с продолжением OnlyOnFaaled вызывает исключение AggregateException

У меня есть простой код для воспроизведения:

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). «Задача была отменена».

Почему я получаю это исключение? Продолжение для задачи никогда не запускается, оно не создавало исключения, но я все равно получаю совокупное исключение при ожидании ....

Надеюсь, кто-нибудь сможет объяснить, почему это имеет для меня смысл:)

38
задан Redth 4 July 2011 в 15:59
поделиться