6

私はこのサンプルコードを持っています:

Task<int> t1= new Task<int>(()=>1);
t1.ContinueWith(r=>1+r.Result).ContinueWith(r=>1+r.Result);
t1.Start();

Console.Write(t1.Result); //1

それは明らかにタスクResultからを返しt1ます。(これは 1)

しかし、最後の継続タスクResultからどのように取得できますか( {1+1+1} である必要があります)3

4

1 に答える 1

5

ContinueWithそれ自体がタスクを返します - Task<int>この場合。Startこのタスクでは、完了を待って結果を検査するなど、「元の」タスクで実行できたはずのことを何でも実行できます (多かれ少なかれ、手動で続行することはできません)。

var t1 = new Task<int>( () => 1);
var t2 = t1.ContinueWith(r => 1 + r.Result)
           .ContinueWith(r => 1 + r.Result);

t1.Start();

Console.Write(t1.Result); //1
Console.Write(t2.Result); //3
于 2013-05-18T07:01:11.287 に答える