Как отменить задачу, которая ожидает с таймаутом, без создания исключений

При отмене задачи с таймаутом (до истечения тайм-аута) с использованием токена отмены генерируется исключение. Пример:

mytask.start();
bool didTaskRunInTime = mytask.wait(5 mins, _cancelToken);

Это означает, что я не могу перейти как показано ниже.

//was the task cancelled
if (_cancelToken.IsCancelRequested)
{
    // log cancel from user to file etc
}

if (didTaskRunInTime )
{
    int taskResult = myTask.Result;
    // log result to file
}
else if (!_cancelToken.IsCancelRequested)
{
    // Tell user task timed out , log a message etc
}

Мне придется сделать все это в моем блоке catch, а мой код выглядит неаккуратно. Как правильно это сделать?

7
задан JasonMArcher 8 June 2014 в 22:25
поделиться