vs.タスクに直接戻る:return await
await
ブロックusing
の重要性
の使用はreturn await
の使用に等しくなりますが、using
ブロックパッケージング方法を使用する場合、2つの間には微妙だが重要な違いがあります。
次の2つの同じ方法を考慮してください
<code class="language-csharp">Task<TResult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } } async Task<TResult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>最初の方法では、タスクに直接返すときに、
ブロックはすぐにusing
オブジェクトをDoAnotherThingAsync
メソッドにリリースして、制御コードを返し、Foo
オブジェクトを直ちにリリースします。ただし、メソッドは完了しない可能性があり、潜在的な間違いにつながる可能性があります。 DoAnotherThingAsync
それどころか、
return await
DoAnotherThingAsync
以上が`return await` vs.タスクを直接返す:なぜ「使用する」ブロックで「待っている」ことはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。