今天dudu给我发的那个msdn我看了,满以为自己是正确的,但是没想到我混淆了.BeginInvoke异步调用方法,和新开一个线程给界面作更新的区别;
可见我的基本功有多不扎实;我用了BeginInvoke()就认为是CLR给我重新开了一个线程进行方法的异步调用,看来不是这么回事情;
dudu给我的方法,原先我也曾想过,但是觉得没什么区别;错了,在dudu帮助下圆满解决,效果和原先的一样,搞定;
private void Form1_DoubleClick(object sender, System.EventArgs e)
{
System.Threading.Thread th=new System.Threading.Thread (new System.Threading.ThreadStart(this.startupdate));
th.Start();
//this.UpdateTreeView();
}
private void startupdate()
{
System.DateTime dt=DateTime.Now;
for(int i=0;i<10000;i++)
{
this.treeView1.BeginInvoke(new treeinvoke(this.UpdateTreeView));
System.Threading.Thread.Sleep(100);
}
System.TimeSpan ts=DateTime.Now-dt;
MessageBox.Show(ts.ToString());
}
private void UpdateTreeView()
{
TreeNode tn;
//this.treeView1.BeginUpdate();
for(int i=0;i<10;i++)
{
tn=new TreeNode (i.ToString());
this.treeView1.Nodes[0].Nodes.Add(tn);
}
this.treeView1.Refresh();
//this.treeView1.EndUpdate();
}
谢谢所有帮助我的朋友,谢谢dudu;