タスク内でCancellationTokenSource.Cancel()メソッドを呼び出してTask <>をキャンセルしようとしていますが、機能させることができません。
これが私が使用しているコードです:
TaskScheduler ts = TaskScheduler.Current;
CancellationTokenSource cts = new CancellationTokenSource();
Task t = new Task( () =>
{
Console.WriteLine( "In Task" );
cts.Cancel();
}, cts.Token );
Task c1 = t.ContinueWith( antecedent =>
{
Console.WriteLine( "In ContinueWith 1" );
}, CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion, ts );
Task c2 = c1.ContinueWith( antecedent =>
{
Console.WriteLine( "In ContinueWith 2" );
}, TaskContinuationOptions.NotOnCanceled );
t.Start();
Console.ReadKey();
Environment.Exit( 1 );
このプリントアウト:
In Task
In ContinueWith 1
In ContinueWith 2
私が期待したのはこれでした:
In Task
ここで何かが足りませんか?タスクはタスク外でのみキャンセルできますか?