try{ { // do something } catch (System.OperationCanceledException e) { Debug.LogWarning("##### cancel #####"); Debug.LogWarning(e); } catch (Exception e) { Debug.LogError(e); }
は実装しておく。
中でエラーが発生した時や、Cancel発生時などは確実にキャッチする。
catch (Exception e) が無いと、task 内部でエラーが発生したときに、エラー表示されない。
後々面倒になるので、手間を惜しまず記述する。
async Task Wait(CancellationToken token)
{
// do something
}
キャンセルする可能性のあるTask には CancellationTokenSource を引数で渡すようにしておく。
Task.Delay なども CancellationToken を渡せれるようになっているのでその記載に準じて記載する。
await Task.Delay(5000, tokenSource.Token)