読者です 読者をやめる 読者になる 読者になる

すっかり存在を忘れていたこと CancellationToken.Register(Action)

TaskをキャンセルするのにつかうCancellationTokenですが、キャンセルされたとき呼ばれるdelegateを登録しておくことができるんですよね。そういえば.NETにTaskが追加された頃になんかで見たことあったかもしれないけど忘れていました。

var cts = new CancellationTokenSource();
var token = cts.Token;
token.Register(() => Console.WriteLine("キャンセルされたよ"));

cts.Cancel();

んで、CancellationToken.Register(Action)は戻りCancellationTokenRegistrationってのがある。なんじゃこれ。 どうやらRegister()したのをUnregister的なことしたいといきCancellationTokenRegistration.Dispose()すればよいらしい。ほう。

使うときは読み直そう。マネージ スレッドのキャンセル