我正在寻找有关以safethread方式使用树视图的信息。是否有任何人对此有所了解或知道某些在线研究链接。
由于
答案 0 :(得分:4)
来自MSDN documentation on System.Windows.Forms.TreeView:
Visual中的任何公开静态(共享) 基本)这种类型的成员是线程 安全。任何实例成员都不是 保证是线程安全的。
幸运的是,Windows Forms中有一种机制可以以线程安全的方式处理来自多个线程的控件:
public delegate void TreeActionDelegate(WhatToDo details);
public void DoSomethingWithThisTree(WhatToDo details)
{
// Assuming that 'this' points to a TreeView
if (this.InvokeRequired) this.Invoke(new TreeActionDelegate(),
new object[] { details });
else
{
// The body of your function
}
}
现在您可以从任何线程调用此函数:
DoSomethingWithThisTree(new WhatToDo("something"));
这将保证操作树的代码将在创建TreeView的线程中执行,因此它将是线程安全的。如果您不想从TreeView继承,则可以使用treeInstance.InvokeRequired
和treeInstance.Invoke(
)。
答案 1 :(得分:0)
...谢谢
行“//你的功能主体”给了我一个启动。
我总是通过这种方法将一些信息传递给GUI对象来解决这个问题......我从未想过将整个函数放在那里
由于
布拉德