C#treeview线程安全操作

时间:2009-01-14 01:07:20

标签: c# treeview thread-safety

我正在寻找有关以safethread方式使用树视图的信息。是否有任何人对此有所了解或知道某些在线研究链接。

由于

2 个答案:

答案 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.InvokeRequiredtreeInstance.Invoke()。

答案 1 :(得分:0)

...谢谢

行“//你的功能主体”给了我一个启动。

我总是通过这种方法将一些信息传递给GUI对象来解决这个问题......我从未想过将整个函数放在那里

由于

布拉德