我有一个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. 从后台更新UI线程
- 4. 从多个后台线程更新UI
- 5. 从后台线程更新GEF模型
- 6. 从后台线程更新UI控件
- 7. 从后台线程更新BindingList <>?
- 8. UIProgressView更新后台线程
- 9. treeview检查节点后更改地点
- 10. 移动节点后C#Treeview不刷新
- 11. Kendo Treeview节点编辑/更新
- 12. canvas未实时更新后台线程
- 13. 从后台线程
- 14. 更改treeview节点颜色
- 15. Silverlight TreeView - 将项目添加到根节点不会更新TreeView
- 16. 主线程正在等待更新接口的后台线程
- 17. 更新片段后台线程中的TextView(UI线程)
- 18. iOS:如何在主线程中更新UI的后台线程?
- 19. 使用后台更新接口更快的方式线程
- 20. 从后台线程更新NSTableView数据源
- 21. 在触摸事件期间从后台线程更新UI
- 22. 从后台线程更新javaFX浏览器内容
- 23. 从后台线程的catch块中更新表状态
- 24. Android更新当前活动从后台线程
- 25. 的Windows Phone更新从后台线程绑定
- 26. 从后台线程结果更新WinForms UI
- 27. 从后台线程更新缓冲图像
- 28. WPF:从后台线程更新UI问题
- 29. 从后台线程更新主视图 - Swift
- 30. 应用程序正在从后台线程修改Autolayout引擎
调查['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