こんにちは、やまだたいし( https://twitter.com/OrotiYamatano )です。
UniTaskのキャンセルについて。
目次
SuppressCancellationThrowを使え
UniTaskではキャンセルした時に OperationCanceledException というExceptionで処理をします。
しかし、その場合キャンセルが伝播してしまい、一番親の呼び元までキャンセルしにいってしまいます。
それを避けるためには SuppressCancellationThrow を使うとよいです。
例えば、こんな感じ。
await UniTask.WaitWhile(() =>hoge, cancellationToken: token) .SuppressCancellationThrow();
こうすることで await UniTask.WaitWhile のところで止まるので更に上位の await UniTask.WaitWhile を呼び出している階層は巻き込まれずに済みます。
まとめ
これだけ。
これだけなので記事にするか迷いましたが、ググる人もいるかと思ったので記事化しました。
詳しくは、はなちるさんの記事とか他の人がわかりやすい記事書いているので見るとよいかも。