はじめに
CancellationToken
とCancellationTokenSource
がキャンセル処理の基盤を形成する一方で、CancellationTokenRegistration
はこのプロセスにおける重要な役割を果たします。この投稿では、CancellationTokenRegistration
の概要とその使い方について解説します。
まだ上記クラスが分からない方は以下の記事を確認することをおすすめします。
【C#】CancellationTokenの使い方 【C#】CancellationTokenSourceの使い方コールバック処理登録の流れ
CancellationTokenRegistration
は、CancellationToken
に対するコールバック登録を管理します。Register
メソッドを使用することで、キャンセルが要求された際に実行されるコールバック関数を登録できます。
C#
var cts = new CancellationTokenSource();
var token = cts.Token;
var registration = token.Register(() =>
{
// キャンセル時に実行されるコード
});
登録解除の管理
CancellationTokenRegistration
を使用すると、登録したコールバックのライフサイクルをより細かく制御することができます。特に、Dispose
メソッドを呼び出すことで、不要になったコールバックの登録を解除することが可能です。
C#
registration.Dispose();
実際の使用例
以下に、CancellationToken
とCancellationTokenRegistration
を使用した実際の例を示します。この例では、非同期タスクがキャンセルされた場合に特定のクリーンアップ操作を実行するように設定しています。
HTML
var cts = new CancellationTokenSource();
var token = cts.Token;
var registration = token.Register(() =>
{
// キャンセル時のクリーンアップ処理
});
Task.Run(() =>
{
// タスクの実行内容
}, token);
まとめ
CancellationTokenRegistration
は、C#の非同期プログラミングにおいて、キャンセル時のコールバックを効果的に管理するための重要な機構です。適切に使用することで、非同期操作のキャンセル処理をより柔軟かつ効率的に行うことができます。