ホームページ > バックエンド開発 > C++ > 非 UI スレッドから WPF コントロールを安全に更新するにはどうすればよいですか?

非 UI スレッドから WPF コントロールを安全に更新するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-17 14:11:09
オリジナル
128 人が閲覧しました

How Can I Safely Update WPF Controls from a Non-UI Thread?

WPF スレッド: バックグラウンド スレッドからコントロールを安全に更新する

WPF はシングルスレッドであるため、メイン以外のスレッドからの UI 更新を慎重に処理する必要があります。 Dispatcher クラスはソリューションを提供します。

Dispatcher.Invoke メソッドの利用

Dispatcher.Invoke を使用すると、メイン UI スレッドでデリゲートを実行できます。これは、バックグラウンド スレッドから WPF コントロールに安全にアクセスして変更するために重要です。

実装手順:

  1. データ取得のためのバックグラウンド スレッドを開始します。
  2. バックグラウンド スレッド内で、Dispatcher.Invoke を使用して、UI の更新を担当するデリゲートを実行します。
  3. 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート