非同期イベント処理手順:詳細なディスカッション
async void
使用
方法は回避されていると考えられていますが、問題は次のとおりです。 async void
void
次のコードフラグメントを検討してください:
別の方法として、より構造化された方法を選択できます。
<code class="language-csharp">private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // 执行异步操作 // ... }</code>
潜在的な再配分の問題に加えて、非同期イベントの使用には他にどのような隠れたtrapがありますか?
<code class="language-csharp">Task onFormLoadTask = null; private void Form_Load(object sender, System.EventArgs e) { this.onFormLoadTask = OnFormLoadTaskAsync(sender, e); } private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e) { await Task.Delay(2000); // 执行异步操作 // ... }</code>
驚くべきことに、驚くべきことに、イベント処理手順でを使用することをお勧めします。これにより、「🎜>」ルールの例外があります。これは、です
イベント処理手順は通常、特定のイベントに応答するために匿名であり、従来の制御プロセスには参加しません。
async void
async void
ただし、場合によっては、以下の理由により、非同期イベントの処理の手順の論理がより有益である場合があります。
例:
以上が非同期イベント ハンドラー: 「async void」を使用するかどうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。