现在的位置: 首页 > 综合 > 正文

关于TreeView对添加海量节点的响应(续)-问题的完美解决

2011年04月18日 ⁄ 综合 ⁄ 共 964字 ⁄ 字号 评论关闭

今天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;

抱歉!评论已关闭.