カスタムワーカーコンポーネントを記述し、そのコンポーネントを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. SWITCHステートメントからメインのGUIスレッドにアクセスする方法は?
- 3. コンテナにdbcontextをディスパッチする方法は?
- 4. Qt GUIでスレッドを使う方法
- 5. 65535を超えるスレッドをディスパッチする
- 6. objective-cメソッドからC関数を非同期的にディスパッチする方法
- 7. Java - イベントをUIスレッドにポストする方法やUIスレッドの関数を呼び出す方法は?
- 8. ディスパッチは機能ではなく、反応にディスパッチを使用する方法は?
- 9. MATLAB GUIで関数間で値を渡す方法は?
- 10. 個別のスレッドでイベントハンドラをディスパッチする
- 11. GUIスレッド上でメソッドを呼び出す方法は?
- 12. 空のアクションをディスパッチする方法は?
- 13. golangで関数スレッドを安全にする方法
- 14. テンプレート関数の動的ディスパッチ?
- 15. 非GUIスレッド内からフォームを作成する方法C#
- 16. 非GUIスレッドでタスク完了通知を取得する方法
- 17. 複数のプロセッサ間で作業をディスパッチする方法は?
- 18. オブジェクトのリストをスレッド関数に渡す方法
- 19. スレッドごとに関数を一度呼び出す方法
- 20. 関数PyQtのスレッドをスレッドする
- 21. Swift 2 - iOS - 元のスレッドにディスパッチ
- 22. vb.netスレッドと呼び出し関数を宣言する方法
- 23. ノンブロッキングのディスパッチ方法
- 24. gui関数とjsノードサーバーへの入力を追加する方法は?
- 25. スレッド、イベント、GUI
- 26. 関数をスレッドする
- 27. クラスのメンバである関数を宣言し、関数ポインタをスレッドに返す方法は?
- 28. 着信NetSocketハンドラを異なるイベントループスレッドにディスパッチする方法は?
- 29. 印刷はQWidget(レンダリング)GUIスレッド
- 30. PySide:別のスレッドからGUIを簡単に更新する方法
[observer pattern](http://en.wikipedia.org/wiki/Observer_pattern)を参照してください。 –
別のGUI要素の使用はどうですか?例:myButton.invoke? –