CancellationTokenSorce と CancellationToken の違いがいまいちわからなかったので整理した
そもそもCancelとは
その関数内の処理をただ止めること。
止めるだけなので、エラー吐かせたりCancelしたことを知るにはもう一工夫必要。
CancellationTokenSorceとは
- CancellationTokenを取得できる
- Cancelそのものや、CancelAfterで時間指定のCancelができる
- Cancelしたい関数内でCancellationTokenSorceを作ってもCancelできない
- 使い終わったらDisposeが必要(しないと次回以降の起動などでおかしくなる)
つまり、Cancelそのものを担当している方。
Cancelしたい関数の外で作って渡して、関数内でCancelしてもらう感じ。
→そもそもCancellationTokenSorceが渡せない関数はCancelできない。
CancellationTokenとは
- CancellationTokenSorceから取得する
- IsCancellationRequestedやThrowIfCancellationRequestedで、Cancelされたかどうかがわかる
(呼び出したその時点でしかわからないので注意。ずっと監視してくれる便利道具ではない。) - Cancelされたときの処理も登録できる
つまり、Cancelされたときの処理を担当している方。
Cancelしたときにエラー吐かせるなどしたいときに使う。
まとめ
Cancelしたい関数の外でCancellationTokenSorceを作って渡す、終わったらDisposeするのが基本。
Cancelしたときに何か処理をしたかったらCancellationTokenを取得する。
参考文献
CancellationTokenSorceについて↓
CancellationTokenについて↓