フォローアップthis question。私は薄くラップする多くの非同期メソッドを持つライブラリを持っていますHttpClient
。効果的に、彼らはいくつかのセットアップを行うと、直接HttpClient
呼び出しから返さTask
を返す:私はこれらの呼び出しにConfigureAwait(false)
を追加するかどうかを熟考してい別のライブラリへの呼び出しからタスクを直接返すライブラリでConfigureAwait(false)を使用すると便利ですか?
public Task DoThingAsyc() {
// do some setup
return httpClient.DoThingAsync();
}
。支配的な知恵は、「はい、図書館では常にそうしている」と思われます。 ConfigureAwait
は、メソッドのシグネチャを変更しないようにするためにバックTask
にラップされる必要があるであろうConfiguredTaskAwaitable
返すためしかし、この場合には、いくつかの(恐らく無視できる)オーバーヘッドを導入するであろう。確かにハードコードにない:
public async Task DoThingAsyc() {
// do some setup
return await httpClient.DoThingAsync().ConfigureAwait(false);
}
私の質問があり、ConfigureAwait(false)
の効率の利点は、おそらくこのケースで導入余分なオーバーヘッドを上回るだろうか?上記の例は、より良いプラクティスと見なされますか?
その場合 - ライブラリ内の 'ConfigureAwait'を待っています。 – GSerg
@GSerg私は私の答えを広げるよ –
ありがとう!私はこれらも同様に良い答えだと思っていますが、最初にキメをした男にそれをあげてください。 –