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

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

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

var t = Task.Factory.StartNew(() =>
    {
        Boolean bOk = DoSomthingImportant();
        return bOk;
    }, TaskCreationOptions.AttachedToParent)
    .ContinueWith((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 с таймаутом вызвать отмену? Почему неМое продолжение называется?

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

ОБНОВИТЬ:

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

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

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

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

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

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