カスタムワーカーコンポーネントを記述し、そのコンポーネントをGUIスレッドで起動させたいとします。しかし、私は既存のウィンドウについて知りたくありません。また、時にはウィンドウが全くない(ログインとメインウィンドウの間の遷移)時があります。だから私はWindow.Dispatcher.BeginInvoke()を使うことはできません。他の方法は何ですか? MSDN MagazineのWPFのスレッドセクションの関数をGUIスレッドにディスパッチする方法は?
2
A
答えて
2
パス(またはCurrent
を使用して取得)あなたの労働者へのSynchronizationContext
。これは、特定の実行コンテキスト(通常はスレッド)を表す下位レベルのスレッドオブジェクトで、Post
メソッドを使用してカスタムアクションをポストすることができます。 WPFアプリケーションの場合、SynchronizationContext.Post
はDispatcher.BeginInvoke
を使用します。特定の実装に縛られることなく、イベントを呼び出すか、特定のコンテキストにメッセージを送信するバックグラウンドコンポーネントを記述するのは良い方法です。
Plusは、それが簡単にユニットが任意の非同期の複雑さを追加することなく、あなたのコンポーネントをテストするために、すべてのスレッドを使用しない同期SynchronizationContext
を書くことは非常に簡単です。
2
グレート記事:Build More Responsive Apps With The Dispatcher
内容: - WPF でスレッディング - を扱う非UIスレッド - - ディスパッチャ を使用してタイマーに
を使用して(申し訳ありませんができません完全に自分の携帯電話のブラウザからフォーマットリスト)
関連する問題
- 1. WxPythonのGUIスレッドで関数を実行
- 2. 65535を超えるスレッドをディスパッチする
- 3. テンプレート関数の動的ディスパッチ?
- 4. Java - イベントをUIスレッドにポストする方法やUIスレッドの関数を呼び出す方法は?
- 5. MATLAB GUIで関数間で値を渡す方法は?
- 6. 非GUIスレッドでタスク完了通知を取得する方法
- 7. 非GUIスレッド内からフォームを作成する方法C#
- 8. Swift 2 - iOS - 元のスレッドにディスパッチ
- 9. Symfony2で同じフォームを複数回ディスパッチする方法
- 10. クラスのメンバである関数を宣言し、関数ポインタをスレッドに返す方法は?
- 11. 関数をスレッドする
- 12. Swing:イベントを作成してコンポーネントにディスパッチする方法は?
- 13. プリミティブ型にマルチメソッドをディスパッチする方法は?
- 14. スレッド、イベント、GUI
- 15. PySide:別のスレッドからGUIを簡単に更新する方法
- 16. Java GUIでのスレッド数の使用
- 17. Tsqlスカラー関数を表関数に変換する方法は?
- 18. DOMイベントを複製または再ディスパッチする方法は?
- 19. スレッドの数を制限する方法
- 20. 複数のワーカースレッドからGUIスレッドに信号を送る
- 21. スレッドまたはバックグラウンドプロセスをアクティビティに関連付ける方法
- 22. Qt GUIの関数からmatplotlibの図を更新する方法
- 23. スレッド、乱数ジェネレータを別々にシードする方法は?
- 24. Flexのコンポーネント間でイベントをディスパッチする方法は?
- 25. djangoシグナル。一意のディスパッチIDを作成する方法は?
- 26. Springディスパッチ・サーブレットで<context:component-scan />を構成する方法は?
- 27. Haskellでコマンドライン引数を使って関数を修正するためのディスパッチ
- 28. matplotlib GUIスレッドがフリーズするのを止めるには?
- 29. GUIにカウンタを追加する方法
- 30. バックグラウンドスレッドからGUIスレッドへのPyQtスロットの接続方法
[observer pattern](http://en.wikipedia.org/wiki/Observer_pattern)を参照してください。 –
別のGUI要素の使用はどうですか?例:myButton.invoke? –