async Taskは便利だけど、cancel処理を書いておかないと色々とハマることがおおいから書くべき
※編集中
cts = new CancellationTokenSource(); cts.Token.Register(() => { Debug.WriteLine("キャンセルされました"); });
try, catchは必ず書くようにする。
catchした場合は再throwする。
async/awaitとCancellationTokenはセットで取り扱う。 asyncメソッドを定義するときは必ずCancellationTokenを引数にする。