より少ないパラメータで)とawait
を使用しますか?私はすべきではないと思いますが、もし私がそれをするなら、何が起こるか教えていただけますか?私はここでかなり失われていて、実際に何が待っていたのでしょうかTask
Task
またはawait
を追加しても新しいTask
は作成されませんか?.NET 4.5非同期は、私は非同期メソッドを持って待っていますし、オーバーロードされたメソッド
20
A
答えて
20
は、既存のものをラップアンドラップしようとしているときに、非同期メソッドを使用することにはほとんどメリットがありません。実際の非同期メソッドに委譲するだけで、ここでは「通常の」メソッドを持つことができます。
(彼らはないよかなり同じ - UserService.LoginExAsync
メソッドが失敗したタスクを返すのではなく、例外をスローした場合、たとえば、非同期/のawaitバージョンはちょうど他のバージョンのに対し、失敗したタスクを返しますをうそれは内部的に何を待っていないとしても、すぐに投げる。)
1
過負荷がasync
としてマークする必要はありませんので、したがって、書き換えコンパイラは何もありません。
3
あなたの過負荷で追加作業を行っていた場合は、実際にはやるしかありません。
public async Task<UserLoginExResult> LoginExAsync(CustomTable exRequest, bool throwEx = true)
{
Task<UserLoginExResult> result = await LoginExAsync(exRequest, Language.ID, throwEx);
//Do some work here that depends on the result from the task completeion
return result;
}
しかし、あなたはそうではありません。
7
async
キーワードは、await
キーワードのみ有効にします。あなたの場合、Task
を直接返すことができるので、async
キーワードは必要ありません。 async
は、値を追加せずにオーバーヘッドを追加するだけです。
詳細については、Stephen Toub's Zen of Async talkを参照してください。彼はこの状況に直接言及します。
関連する問題
- 1. 非同期メソッドは、私は下に次のコード持って
- 2. 非同期メソッドが呼び出された同期メソッドを待機します
- 3. 非同期メソッドは、私は現在、このようなコード持っている非非同期
- 4. 同期または非同期メソッド
- 5. 非同期メソッドの非同期メソッド
- 6. 非同期メソッドを待つ
- 7. 私が使用する非同期メソッドのHttpClientを持って
- 8. 私の非同期メソッドは、 "serialPort = SerialDevice.FromIdAsync()"を待っているのですか?
- 9. は非同期メソッド
- 10. 非同期は - 待って - スレッドが
- 11. 非同期メソッドと待機メソッド
- 12. HazelcastOSGiInstance非アクティブ化メソッド:同期または非同期
- 13. 非同期メソッド非同期に新
- 14. 非同期ループ内の非同期メソッド
- 15. 残りのメソッドを非同期にするのを待っていますか?
- 16. 基本的な非同期は、私は信じて待っています。この非常に基本的な非同期を持って
- 17. angular2 Observable:非同期の結果を待って別の非同期メソッドを返す方法
- 18. 私はこれを持っている非同期親関数
- 19. .hide( "slow")は同期または非同期メソッドですか?
- 20. 非同期メソッドを同期する
- 21. この非同期メソッドは、演算子を「待つ」と実行されます不足している同期
- 22. void非同期メソッドを待つ
- 23. セマフォ非同期メソッド
- 24. チェーン非同期メソッド
- 25. Swift:非同期メソッドを同期メソッドでラップする方法は?
- 26. 非同期は/私はこのポストルートを持っている
- 27. 私はそうのような非同期メソッド本体をお持ちの場合は非同期メソッド本体
- 28. RxJavaで非同期メソッドを同期する方法は? RxJavaの非同期ウォーターフォール
- 29. バベルは非同期ですが、待っていませんか?
- 30. 非同期メソッドと同期メソッドを連続して呼び出します
しかし、追加に何か問題はありますか?オーバーヘッドのコストはいくらですか?または、コンパイラはそれを最適化しますか? –
@Matt:基本的に、簡単なステートマシンを設定するコストです。また、タスクの作成時にスローされる例外がどのように伝達されるかを変更するため、100%の同等のものではありません。しかし、コンパイラは間違いなく一方を他方に最適化しません。 –
ありがとうございます。あなたは私がそれを持っていなくても、議論を解決するのを手伝ってくれました。 :) –