C#でのAdamFreemanのPro.NET4並列プログラミングのVisualStudio 2012 Listing_07でコンソールアプリケーションを実行しているときに、タスクをキャンセルしようとすると例外が発生します。OperationCanceledException
タスクでキャンセルの試みが検出されたときにスローしている(またはそう思われる)ので、私にはこれの理由について大きな謎はないようです。
これはバグですか、それとも何かが足りませんか?問題は基本的に彼のすべてのタスクキャンセルの例で発生しています!本が店に来てから(2010年)、タスクライブラリの何かが変更されたとしか思えませんか?
// create the cancellation token source
CancellationTokenSource tokenSource
= new CancellationTokenSource();
// create the cancellation token
CancellationToken token = tokenSource.Token;
// create the task
Task task = new Task(() => {
for (int i = 0; i < int.MaxValue; i++) {
if (token.IsCancellationRequested) {
Console.WriteLine("Task cancel detected");
throw new OperationCanceledException(token);
} else {
Console.WriteLine("Int value {0}", i);
}
}
}, token);
// wait for input before we start the task
Console.WriteLine("Press enter to start task");
Console.WriteLine("Press enter again to cancel task");
Console.ReadLine();
// start the task
task.Start();
// read a line from the console.
Console.ReadLine();
// cancel the task
Console.WriteLine("Cancelling task");
tokenSource.Cancel();
// wait for input before exiting
Console.WriteLine("Main method complete. Press enter to finish.");
Console.ReadLine();