0

我正在寻找有关以安全线程方式使用树视图的信息。有没有人有这方面的经验或知道一些在线研究链接。

谢谢

4

2 回答 2

4

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.InvokeRequiredand treeInstance.Invoke()。

于 2009-01-14T01:16:37.373 回答
0

谢谢...

“//你的函数的主体”这行给了我一个开始。

我总是通过这种方法将一些信息传递给GUI对象来实现这一点......我从没想过将整个函数体放在那里

谢谢

布拉德

于 2009-01-14T01:24:07.560 回答