C# treeview 多线程控制 报错的问题

2025-04-27 12:46:47
推荐回答(1个)
回答1:

跨线程访问对象是会报错的,如果要跨线程来操作,需要定义一个委托来执行指定的方法

public delegate void MyMethod();  //声明一个委托,以使其它线程访问

private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;

Thread t = new Thread(new ThreadStart(change));
t.IsBackground = true; // 设置为后台线程,在主窗口退出时线程强制退出
t.Start();
}

//其它线程调用写好的方法
void change()
{
MyMethod mt = new MyMethod(this.addarea);
this.Invoke(mt);  //在当前线程,调用mt
}

//这是你写的方法

public void addarea(ccc m)
{
int i = 0;
while (m.m_string[i] != null)
{
treeView1.Nodes.Add(m.m_string[i]);
i++;
}
}