调用一个方法用来绑定Treeview:
LoadDepartTV(tvDepartment.Nodes, cbbOrgan.SelectedValue.ToString(),cbbOrgan.Text.ToString());
由于用时有点长,想改成异步调用,请问该怎么实现呢

解决方案 »

  1.   

    delegate void LoadDepartTVHandler(tvDepartment.Nodes, cbbOrgan.SelectedValue.ToString(),cbbOrgan.Text.ToString()); 
    LoadDepartTVHandler handler = new LoadDepartTVHandler();
    handler.BeginInvoke(一些参数略);
      

  2.   


            //entry
            private void button1_Click( object sender, EventArgs e ) {
                TestMethodHandler handler = new TestMethodHandler(this.TestMethod);
                handler.BeginInvoke( new AsyncCallback( CallBack ), this );
            }        //asynccallback
            public void CallBack( object obj ) { 
                //完成的时候会触发该事件
            }        //delegate
            public delegate void TestMethodHandler();        //testmethod
            public void TestMethod() {
                System.Threading.Thread.Sleep( 1000 * 60 * 10 );
            }
      

  3.   


    Control.BeginInvoke 只是封装方法之创建线程罢,貌似没有异步调用的功能?还不如开个线程,最后用 Control.BeginInvoke 回到主线程上去
      

  4.   

    不知道ls是怎么看出用了Control.BeginInvoke的,明明是Delegate.BeginInvoke