跨线程访问对象是会报错的,如果要跨线程来操作,需要定义一个委托来执行指定的方法
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++;
}
}