2016-06-01 3 views
2

例えば、私は明確な順序で3つのタスクを注文したいと考えています。 オプションBはオプションAと同じですか?タスクの注文方法が異なります

オプションA:

Task returnTask = initTask.ContinueWith(async delegate { await homeTask; }).ContinueWith(async delegate { await sessionTask; }); 
await returnTask; 

オプションB - 1つのメソッド内:

await initTask; 
await homeTask; 
await sessionTask; 

答えて

1

ContinueWithは、Aは、タスク2と3を待ちませんタスク戻っ代表団のオプションのための特別なサポートしていませんので。

待っているとタスクが開始または実行されません。すでに実行中のタスクを待ちます。そのため、オプションBはタスクを順序付けしません。前回のいずれかが完了した後、次のタスクが開始される方法

await F1(); 
await F2(); 
await F3(); 

:それはおそらくほとんどawait Task.WhenAll(...);

と同じですが、あなたはこれを使用する必要があります。

関連する問題