async and await:Uiをブロックせずに非同期プログラミングを簡素化
async
およびawait
は、非同期プログラミングの強力なツールであり、コードの読みやすさと保守性を向上させます。 ただし、それらの操作は、従来のバックグラウンドスレッドとは大きく異なります。彼らの行動を明確にしましょう。
<code class="language-csharp">private async void button1_Click(object sender, EventArgs e) { Task<int> access = DoSomethingAsync(); // Other UI-responsive tasks here int a = 1; // This executes immediately, not after the 5-second delay int x = await access; // Execution pauses here until DoSomethingAsync completes }</code>
キーワードはコンパイラを信号して、状態マシンを生成します。このマシンは、非同期操作のライフサイクルを管理します。 async
非同期タスク(access
)を開始します。 重要なことに、DoSomethingAsync
はDoSomethingAsync
を使用するため、await
メソッドはUIスレッドをブロックしません。 button1_Click
セクションは、同時に実行できます。// Other UI-responsive tasks here
(表示されていませんが、DoSomethingAsync
を含むと想定されています)は、5秒の遅延を導入します。 ただし、System.Threading.Thread.Sleep(5000)
はコントロールを発信者に戻します。 UIは応答性の高いままです。 await access
が終了すると、スレッドプールのスレッドがDoSomethingAsync
からbutton1_Click
。
x
、Thread.Start()
とは異なり、新しいスレッドを作成しないでください。代わりに、スレッドプールと状態マシンを活用して非同期操作を効率的に管理し、UIフリーズを防ぎ、同時実行を可能にします。 これにより、非同期プログラミングに対するよりクリーンで効率的なアプローチが提供されます。
以上がUIスレッドをブロックせずに「Async」と「待ち望」は非同期操作をどのように管理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。