2017-09-12 23 views
3

これらのコールは同様に動作しますか。同様に、async-awaitが実行されているのと同じ方法で動作しますが、同じ元のスレッドコンテキストで実行することはできますか?あるいは、最初のものは、実行が別のスレッドコンテキストで行われることを保証しますか?次の非同期待機コールの違いを理解する

最初の方法 -

Task task = SomeAsyncTask(); 
await task(); 

第二の方法 -

await SomeAsyncTask(); 

答えて

6

Task task = SomeAsyncTask();await task();間のコードがある場合は、あなたのタスクは、非同期コードの実行を開始し、現在のスレッドがでそのコードを実行します同時。

そうでなければ、彼らは

Task task = SomeAsyncTask(); 
//Codes executed on current thread while SomeAsyncTask is running 
await task(); 
0

All asynchronous methods start synchronously ...等しいです。

です:

await SomeAsyncTask(); 

は全く同じである。いずれの場合も

var task = SomeAsyncTask(); 
await task; 

それはどちらか、完全であるか、それが返した時点で非同期awaitを、当たるまで、SomeAsyncTaskが実行されます仕事。そのタスクは、呼び出しメソッドによってawaitになります。