イベント処理手順:避けるべきですか?
async void
一般的に言えば、特にタスクを開始するときは、タスクの追跡とハンギングのメカニズムが欠けており、異常な処理がより複雑であるため、メソッドの使用を避けるためのベストプラクティスの提案。しかし、この原則は
async void
例を見てみましょう:async void
この方法を使用する代わりに、タスクトラッキングとキャンセル機能を達成するためにコードを再設計する方が良いです。
<code class="language-csharp">private async void Form_Load(object sender, System.EventArgs e) { await Task.Delay(2000); // 执行异步操作 // ... }</code>
インシデント処理手順の隠されたトラップは何ですか?
<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
イベント処理プログラムで使用することは許容できます。したがって、ベストプラクティスに違反することなく、イベント処理プログラムで
以上がAsync voidイベントハンドラーを避ける必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。