WPF スレッド: バックグラウンド スレッドからコントロールを安全に更新する
WPF はシングルスレッドであるため、メイン以外のスレッドからの UI 更新を慎重に処理する必要があります。 Dispatcher
クラスはソリューションを提供します。
Dispatcher.Invoke メソッドの利用
Dispatcher.Invoke
を使用すると、メイン UI スレッドでデリゲートを実行できます。これは、バックグラウンド スレッドから WPF コントロールに安全にアクセスして変更するために重要です。
実装手順:
Dispatcher.Invoke
を使用して、UI の更新を担当するデリゲートを実行します。Action
への引数として Func
または Dispatcher.Invoke
デリゲートを指定します。例:
<code class="language-csharp">// Launch a background thread for data fetching Thread dataThread = new Thread(RetrieveData); dataThread.Start(); // Background thread function private void RetrieveData() { // ... Data retrieval from a web server ... // Update the UI via Dispatcher.Invoke Application.Current.Dispatcher.Invoke(() => { // Update WPF controls with the fetched data }); }</code>
重要な注意:
UI のフリーズを防ぐために、Dispatcher.Invoke
内で長時間の操作を実行しないでください。時間のかかるタスクの場合は、代わりに BackgroundWorker
を使用してください。
以上が非 UI スレッドから WPF コントロールを安全に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。