キャンセル トークンを使用して (タイムアウトが終了する前に) タイムアウトのあるタスクをキャンセルすると、例外がスローされます。例:
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 ブロックで行う必要があり、コードが乱雑に見えます。これを行う正しい方法は何ですか?