非同期プログラミングの返品値:直接返す
またはを使用しますか? Task
非同期プログラミングでは、開発者はしばしばreturn await
構造を返すことに絡み合っています。この記事では、この問題を明確にし、特定のシーンを通じての優位性を説明します。
直接Task<T>
を返す代わりにreturn await
を選択するのはなぜですか? return await
および構造関数を返します。ただし、ステートメントまたはより一般的にreturn await
ブロックで使用される場合、2つの間には微妙な違いがあります。 Task<T>
次のコード例を考えてみてください:
Task<T>
return await
シーン分析using
try
最初の方法(return await
)では、
オブジェクトを直ちにリリースします。これは、メソッドが完了するまでに長い間発生する可能性があり、エラーは
早期リリースによって引き起こされます。<code class="language-csharp">Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return foo.DoAnotherThingAsync(); } }</code>それどころか、2番目のメソッド(
<code class="language-csharp">async Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }</code>を使用)は、
メソッドが完了する前に待機し、をリリースします。これにより、正しいリリースと通常の操作が保証されます。
結論await
using
DoAnotherThingAsync()
は通常、Foo
関数に直接相当しますが、後者はFoo
ステートメントを使用したり、
シーンを使用したりするよりも優れています。この場合、構造は、リソースの正しいリリースと実行を保証し、潜在的なトラップを防ぎ、信頼できる非同期操作を確保します。 await
以上が「タスク」を直接返すか、非同期プログラミングで「return await」を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。