以下のようなタスクのキャンセルに関する簡単な例を実行しようとしました
CancellationTokenSource tokenSource2 = new CancellationTokenSource();
CancellationToken token2 = tokenSource2.Token;
Task task2 = new Task(() =>
{
for (int i = 0; i < int.MaxValue; i++)
{
token2.ThrowIfCancellationRequested();
Thread.Sleep(100);
Console.WriteLine("Task 2 - Int value {0}", i);
}
}, token2);
task2.Start();
Console.WriteLine("Press any key to cancel the task");
Console.ReadLine();
tokenSource2.Cancel();
Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);
が出力されると思ってい ましたが、"False"Console.WriteLine("Task 2 cancelled? {0}", task2.IsCanceled);
が出力されました。**"Task 2 cancelled? True"**
何がおこったか知ってますか?それは期待される動作ですか?ありがとう。
編集: キャンセル要求が呼び出される前にタスクが完了していないことを確認します。を追加しましたConsole.ReadLine()
。