コンソールMain
アプリケーションのメソッド:
Do().ContinueWith(t => Do())
.ContinueWith(t => Do())
.ContinueWith(t => Do());
Do
を返すメソッドですTask
:
var source = new CancellationTokenSource();
var token = source.Token;
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Inside " + _Counter);
token.WaitHandle.WaitOne(1000);
Console.WriteLine(_Counter++ + " is done");
}, token);
And_Counter
は整数フィールドです。
private static int _Counter = 1;
実行すると、結果は次のようになります。
中 1
1 完了
中 2
中 2
中 2
2 完了
3 完了
4 完了
それで、私がTask
呼ばれるtとAction<Task>
呼ばれるaを持っているとしましょう。
を呼び出すとt.ContinueWith(a)
、tが完了した後にaを呼び出す必要がありますよね? aが実行されると、デリゲートtの呼び出しが終了したことを意味します。
この結果の原因は何ですか? 私はここで何か明らかなことを得ていませんか?
私が使用するもの:
- ウィンドウズ 8 RTM
- .NET フレームワーク 4.5