WPF UI スレッドセーフ アクセス
WPF アプリケーションでは、例外やプログラムのクラッシュを避けるために、非 UI スレッド (ファイル監視イベントなど) からの UI の更新を慎重に処理する必要があります。これは、WPF での UI スレッドと非 UI スレッドの分離が原因で発生します。
Dispatcher.Invoke()
メソッドを使用します非 UI スレッドから UI スレッドに安全にアクセスするために、WPF は Dispatcher.Invoke()
メソッドを提供します。これにより、デリゲートを UI スレッドのスケジューラにキューに入れることができ、UI スレッドが使用可能になったときにデリゲートが実行されることが保証されます。
このメソッドをコードで実装する方法は次のとおりです:
<code class="language-csharp">Application.Current.Dispatcher.Invoke(new Action(() => { dataGridRows.Add(ds); }));</code>
これにより、UI スレッドが dataGridRows
コレクションに新しい行を安全に追加し、スレッドの同期の問題が回避されます。
Dispatcher.Invoke()
に加えて、次のような他の手法を使用して UI スレッドに安全にアクセスできます。
BackgroundWorker
イベントを使用してメイン スレッドの UI を更新します。 RunWorkerCompleted
以上が非 UI スレッドから WPF UI を安全に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。