WPF でバックグラウンド タスクを効果的に実行する
従来、WPF アプリケーションのバックグラウンド タスクは、TAP、TPL、BackgroundWorker、またはディスパッチャ。ただし、ノンブロッキング UI、進行状況レポート、キャンセル、マルチスレッドのサポートなど、特定の基準を必要とするタスクについては、推奨されるアプローチが進化しています。
.NET 4.5 以降では、最良のソリューションは、を活用することです。タスクベースの API と非同期/待機パターン。これにより、開発者はバックグラウンドでタスクを非同期に実行しながら、コードを逐次的に記述することができます。例外処理の使用も、構造化エラー処理によって簡素化されます。
次の例を考えてみましょう:
private async void Start(object sender, RoutedEventArgs e) { try { await Task.Run(() => { int progress = 0; for (; ; ) { System.Threading.Thread.Sleep(1); progress++; Logger.Info(progress); } }); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
ここでは、Start メソッドが Task.Run() を使用して非同期タスクを開始します。 UI スレッドを妨げることなく、タスクを同時に実行できます。タスクはループ内で実行され、進行状況が増分され、情報が記録されます。例外処理は非同期ブロック内で処理されます。
このアプローチは、望ましい非ブロック動作を提供し、進行状況レポートを可能にし、キャンセルをサポートし (タスクに関連付けられたキャンセル トークンを介して)、タスクを実行できるようにします。必要に応じて複数のスレッドを実行できます。
このトピックの詳細については、次のリソースを参照してください。
以上がWPF で Async/Await を使用してバックグラウンド タスクを効果的に管理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。