.Net 4から、タスクのキャンセルができるようになりましたが、ちょっとわかりづらかったところ。
CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; Task.Factory.StartNew(() => { //... if (token.IsCancellationRequested)//<=このようにラムダ式で直接tokenを参照しつつ... }, token); //<=ここでも引数にまたtokenを渡すのか...
まあ、上のMSDNにもTaskが実行中のOperationCanceledExceptionが同じtokenによるものか判別するのに使う的に書いてある。
あと、同じような疑問がこちらにも。Taskのコンストラクタ引数にCancellationTokenを渡すことで、タスク実行前にキャンセルされたこがチェックできるとな。
わかりましたが、でも、意図せずに違うtoken渡しすことが簡単にできちゃいますね。