VB.NET Taskクラスの処理キャンセル

タスクを実行した際、途中でキャンセルしたいことがあります。その際の方法を記載します。

Taskクラス によるタスクキャンセルは、CancellationTokenSourceクラスを使用します。

タスクキャンセル要求は、CancellationTokenSource.Cancel()メソッドを実行します。

これによりキャンセルフラグが立ち、このフラグを参照することによりキャンセル処理を実行します。

ThrowIfCancellationRequested()によるキャンセル方法

オペレーション側プログラム

タスク側プログラム(ThrowIfCancellationRequestedメソッド抜け出し)

CancellationToken構造体のThrowIfCancellationRequested()メソッドで、キャンセルフラグをチェックします。

また、実際のキャンセルフラグは、CancellationToken.IsCancellationRequestedプロパティに設定されていて

このフラグが立ったらタスク側は、OperationCanceledException例外をスローするように作成します。

キャンセルフラグの例外スローのコードは、以下のコードのようになります。

上記を一文で書けるようにメソッドが用意されています。

 

例外のスローではない IsCancellationRequestedでのキャンセル抜け出し

ThrowIfCancellationRequested()での抜け出しは、 例外スローするので、上に記載したコードではキャンセルの際、MessageBox.Show(“タスク終了”)実行されません。

そこで、IsCancellationRequestedを参照して抜け出すようにします。

タスク側プログラム(IsCancellationRequestedプロパティ抜け出し)

 

コメントを残す