我正在寻找有关以安全线程方式使用树视图的信息。有没有人有这方面的经验或知道一些在线研究链接。
谢谢
从System.Windows.Forms.TreeView 上的 MSDN 文档:
此类型的任何公共静态( Visual Basic 中为Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。
幸运的是,Windows 窗体中有一种机制可以以线程安全的方式处理来自多个线程的控件:
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
and treeInstance.Invoke(
)。
谢谢...
“//你的函数的主体”这行给了我一个开始。
我总是通过这种方法将一些信息传递给GUI对象来实现这一点......我从没想过将整个函数体放在那里
谢谢
布拉德