【Unity】Taskのキャンセル処理を楽に行う拡張メソッド【AwaitTriggerExtensions】
概要
オブジェクトが削除または非アクティブになった際にasync/await処理が動き続けるのをキャンセルする拡張メソッド(自作)
使用例
[SerializeField] private AwaitTriggerExtensions _awaitExt; private async Task Hoge() { Debug.Log("開始"); await _awaitExt.CancelableAsync(CoroutineMethod(() => { Debug.Log("終了"); }); } private IEnumerator CoroutineMethod(Action action = null) { yield return new WaitForSeconds(3f); action?.Invoke(); }
①AwaitTriggerExtensionsをTaskのキャンセル処理を行いたいオブジェクトにアタッチ
②Action型を引数としたコルーチンを用意(遅延・終了処理用)
③任意の場所でCancelableAsyncを実行
※デフォルトでアタッチされたオブジェクトのOnDestroyが呼ばれたタイミングで自動的にキャンセルされるようになっていますが、_awaitExt.Cancel()を呼ぶことで任意のタイミングでキャンセルすることができます。