2011/11/24

Task と OperationCanceledException

System.Threading.Task.Task クラス。
Task の開始後に CancellationToken を Cancel 状態にした場合は、自分で ThrowIfCancellationRequested() を呼び出さない限り、OperationCanceledException は発生しない。
しかし、Task の開始前に Cancel 状態にした場合は、Task.Wait() で OperationCanceledException が発生する。

Task 開始前に Cancel 状態にならないようにする
または
Wait() を try-catch して、開始前のキャンセルを処理する
のどちらか。