私は多くのノードを持つTreeViewを持っています。私は、ノードを反復処理し、ノードを追加するか、Checkedプロパティを更新するバックグラウンドワーカーを持っています。参照としてバックグラウンドスレッドにノードを渡すと、私のバックグラウンドスレッドからノードを更新できますか?(メインスレッドで作成されたコントロールを更新するためにSyncronizationContextクラスを使用しています)ちょうど私がバックグラウンドスレッドから行うことができない/できない場合は、プログラミングの変更が多いので、私はできるかどうか不思議です。参照によってバックグラウンドスレッドからTreeViewノードを更新します。
答えて
UIスレッド外のコントロールを更新することはできません。しかし、Application.Current.Dispatcher.Invoke
(WPFの場合)またはControl.Invoke
(WinFormsの場合)を使用してUIスレッドでいくつかの関数を呼び出すことができます。これらの操作は、メインスレッド上で実行され、あなたがここに
私はメインスレッドを更新するためのSynchronizationContextクラスを使用しているに合った別の状況ですが、コードは次のようなものだ: プライベート読み取り専用のSynchronizationContextをsynContext = new AsyncOperationManager.SynchronizationContext; そして、呼び出しを行うには、必要なデータの引数を受け取り、次にこれをコールします(backgroundworkerスレッドから) syncContext.Post(delegate {OnUpdateUIControl(argsForUpdate);}); – ganders
あなたのコードは、(事実を除いて、あなたのサンプル中の単語「新」を必要としない)あまりにも正常に動作する必要があります – Natalia
そうそう、...そのおかげで逃しました。 – ganders
- 1. データフレームを参照によってどのように更新できますか?
- 2. TreeViewからノードを削除します
- 3. 参照によってdata.frameを渡し、それをrcppで更新する
- 4. javaFXブラウザをバックグラウンドスレッドから更新する
- 5. バックグラウンドスレッドからバウンドプロパティを更新する
- 6. バックグラウンドスレッドからUIを更新する
- 7. バックグラウンドスレッドからdatagridviewを更新する
- 8. ノード間のフォームエッジは、属性の参照によって、Pythonでigraphを参照します。
- 9. ASIHTTPRequest /バックグラウンドスレッドでNSManagedObjectを更新しようとしています
- 10. メインスレッドは、インターフェイスを更新するバックグラウンドスレッドを待っています
- 11. onWrite時の参照値を更新しようとしていますか?
- 12. 他のツリービューからTreeViewを参照する
- 13. Javaの戻り参照値(または参照によって)
- 14. ヌルオブジェクト参照を参照しようとしていますか?
- 15. 参照によってデータメンバーを渡す
- 16. 参照によってベクトルを渡す
- 17. ImmutableListは参照リストの更新時に更新されます
- 18. ネストされたdata.tableで参照によってlist-columnを変更します。
- 19. Rcpp:参照によってデータフレームに行を追加します。
- 20. Stringを渡すことによってLinkedListのノードを更新します。
- 21. Observable Listをバックグラウンドスレッドから更新する正しい方法
- 22. 他のディレクトリからのディレクトリ参照のタイムスタンプを更新しますか?
- 23. python 3 - tkinter - ttk treeview:列テキストを参照
- 24. VB.Net TreeViewでノードを更新する方法NodeMouseClick
- 25. 分離されたスレッドからTreeViewノードの前景色を変更します
- 26. TextInputは参照によって値を取得します。
- 27. AJAXボタンフィルタ更新コード更新(新しいコードを参照)
- 28. テンプレートからの参照によって返される
- 29. グループによって参照行から行賢明パーセント差data.table
- 30. 参照テーブルを変更せずに参照制約付きモデルから単一テーブルを更新
を消費する何か時間を行うにしようとした場合、[ 'Control.Invoke'方法](http://msdn.microsoftを調査し、アプリケーションが応答しなく作ることができることを覚えておいてください。 com/en-us/library/zyzhdc6b.aspx)または['Control.BeginInvoke'](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.begininvoke.aspx) 。 –
これはまだ私が記事を見つけた場所を覚えていない....仮想制御 –