キャンセルが要求された時の処理は、CancellationToken構造体のプロパティやメソッドを使いつつ、自前で処理を書かないといけない。
CancellationToken 構造体 (System.Threading) | Microsoft Docs
MainClass.csで、
今回は、CancellationToken.IsCancellationRequestedを見て、trueならreturnで終了しちゃう。
2秒後と4秒後にそれぞれチェックする。
あと意味は無いけど、今回はcts.TokenをCancellationToken構造体オブジェクトtokenに格納して使ってる。
tokenをそのままラムダ式で使えるのは、
ラムダ式は外部変数をキャプチャできるから。
3秒後にキャンセルなので、4秒後のCancel2で終了する。