Кто отменил мою задачу?

Моя задача C # отменяется, но не мной. Я не получаю трассировку стека и не могу понять, где возникает проблема.

Мой вызов задачи выглядит так:

var t = Task<Boolean>.Factory.StartNew(() =>
    {
        Boolean bOk = DoSomthingImportant();
        return bOk;
    }, TaskCreationOptions.AttachedToParent)
    .ContinueWith<Boolean>((theTask) =>
    {
        var reason = theTask.IsCanceled ? "it was canceled" : "it faulted";
        Debug.WriteLine("Error: Task ended because " + reason + ".");
        ... log the exception to one of my objects...
        return false;
    }, TaskContinuationOptions.NotOnRanToCompletion);

Я хочу, чтобы задание продолжения запускалось, если задание было сбойным или было отменено, но не в том случае, если оно прошло нормально. Продолжение никогда не выполняется.

Позже моя программа ловит AggregateException, который оборачивает TaskCanceledException.

Мое другое основное взаимодействие с моими задачами - вызывать WaitAny (taskArray, timeout) до тех пор, пока у меня не останется больше задач для запуска, затем вызывать WaitAll без тайм-аута до тех пор, пока последняя задача не будет выполнена.

Может ли WaitAny с таймаутом вызвать отмену? Почему не было вызвано мое продолжение?

Это всего лишь моя вторая кисть с библиотекой задач, поэтому я не в курсе.

ОБНОВИТЬ:

Я нашел этот ТАК вопрос: Как распространить статус отмененной задачи на задачу продолжения. Одна ошибка в моем коде выше (но не причина отмены) состоит в том, что я предположил, что статус задач продолжения был таким же, как статус исходной задачи. На самом деле вам нужно проделать определенную работу, чтобы получить одно от другого, как описано в другом посте.

ОБНОВЛЕНИЕ 2:

Брайан: Спасибо за документальную ссылку. Я искал высокие и низкие альтернативные причины отмены Задачи, но пропустил эти слова:

«Если вы ожидаете задачу, которая переходит в состояние« Отменено », задача (заключенная в AggregateException) создается и генерируется. Обратите внимание, что это исключение указывает на успешную отмену, а не на неисправную ситуацию. Поэтому свойство« Исключение »для задачи возвращает ноль. "

Ответы на вопрос(1)

Ваш ответ на вопрос