私は賢明な人から何度もアドバイスを読んだことがありますが、それにはいくつかの注意点があります:ConfigureAwait(false)
は常にの中に入れてください。だから私はその答えを知っていることはかなり確信していますが、私は100%になりたいです。このシナリオでは、他の非同期ライブラリを薄くラップするライブラリがあります。ライブラリ内のConfigureAwait(false)を呼び出したアプリケーションの同期コンテキストが失われる可能性がありますか?
ライブラリコード:
public async Task DoThingAsyc() {
// do some setup
return await otherLib.DoThingAsync().ConfigureAwait(false);
}
アプリケーションコード:
// need to preserve my synchronization context
await myLib.DoThingAync();
// do I have my context here or did my lib lose it?
'ConfigureAwait'は' Task'を返しません。しかし、 'ConfiguredTaskAwaitable'があります。 'DoThingAsync'はこの例のようには見えません。 – i3arnon
@ i3arnonだから私はそれが構築されていないだろうと思う。今はまし? (私のatmのコンパイラはありません) –
はい、それはコンパイルされ、 'ConfigureAwait'は呼び出し側に影響しません。 – i3arnon