3

が与えられた場合Task t、の間に意味上の違いはありますか

t.ContinueWith(ante => DoSomethingWith(ante));

t.ContinueWith(ante => DoSomethingWith(t));

t、後で変異していないと仮定しますか?

antecedent引数は、2 番目のバリアントのようにクロージャの割り当てを回避するためだけに存在しますか?

4

1 に答える 1

5

前件の引数は、2 番目のバリアントのようにクロージャの割り当てを回避するためだけに存在しますか?

事実上、はい。また、これをより簡潔に次のように書くこともできます。

 Task.Factory.StartNew( () => DoSomething())
             .ContinueWith( t => DoSomethingWith(t));

TaskFactory.ContinueWhenAllまたはを使用するのと同様の API も提供しますTaskFactory.ContinueWhenAny

于 2012-05-30T19:48:16.930 に答える