我有一個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);},null); – ganders 2011-12-21 19:16:43
你的代碼也應該可以正常工作(除非你的示例中不需要單詞「new」) – Natalia 2011-12-21 20:37:16
哦,是的,錯過了......謝謝。 – ganders 2011-12-22 00:08:45
- 1. 從後臺線程更新UI控件
- 2. 從後臺更新UI線程
- 3. 從後臺線程更新BindingList <>?
- 4. 從後臺線程更新GEF模型
- 5. 從多個後臺線程更新UI
- 6. 從後臺線程更新UI
- 7. 從後臺線程更新表視圖?
- 8. 從後臺線程問題更新UI
- 9. UIProgressView更新後臺線程
- 10. treeview檢查節點後更改地點
- 11. 從單獨的線程更改TreeView節點的前景色
- 12. 更新從另一個線程treeview
- 13. 移動節點後C#Treeview不刷新
- 14. Kendo Treeview節點編輯/更新
- 15. treeview根節點的索引
- 16. 後臺線程更新通知NSView
- 17. canvas未實時更新後臺線程
- 18. wpf後臺線程更新UI控制
- 19. 從後臺線程
- 20. VB.Net從後臺線程更新用戶界面
- 21. 更改treeview節點顏色
- 22. Silverlight TreeView - 將項目添加到根節點不會更新TreeView
- 23. 從後臺線程刷新C#DataGrid
- 24. treeview在檢查網絡應用程序中的節點後更改地點
- 25. Qt:後臺線程刷新UI線程
- 26. 主線程正在等待更新接口的後臺線程
- 27. iOS:如何在主線程中更新UI的後臺線程?
- 28. 更新片段後臺線程中的TextView(UI線程)
- 29. 使用後臺更新接口更快的方式線程
- 30. C#TreeView節點
調查['Control.Invoke'方法(http://msdn.microsoft。 COM/EN-US /庫/ zyzhdc6b.aspx),或['Control.BeginInvoke'](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.begininvoke.aspx) 。 – 2011-12-21 16:24:05
這又是一個適合虛擬控制 – 2011-12-21 16:25:42