最近、WPFでプログラミングを開始し、次の問題に遭遇しました。使い方がわかりませんDispatcher.Invoke()
。私はスレッド化の経験があり、使用したばかりのいくつかの簡単なWindowsフォームプログラムを作成しました。
Control.CheckForIllegalCrossThreadCalls = false;
はい、私はそれがかなり不十分であることを知っていますが、これらは単純な監視アプリケーションでした。
実際には、バックグラウンドでデータを取得するWPFアプリケーションを作成しています。新しいスレッドを開始して、(Webサーバーから)データを取得するための呼び出しを行います。次に、WPFフォームに表示します。問題は、このスレッドからコントロールを設定できないということです。ラベルも何もありません。これはどのように解決できますか?
コメントへの回答:
@Jalfp:
データを取得するときに、「新しいトレッド」でこのDispatcherメソッドを使用しますか?または、バックグラウンドワーカーにデータを取得させ、フィールドに配置して、このフィールドが入力されるまで待機する新しいスレッドを開始し、ディスパッチャーを呼び出して、取得したデータをコントロールに表示する必要がありますか?