多线程委托回调

 public void updateme()  程序调用这个函数
        {
            lblTime.Text = "正在读取数据...";
            if (isruning) return;
            isruning = true;
            this.btnDo.Enabled = false;
            lv.Items.Clear();  设置一些数据 , 比如提示或者 按钮等. 查询期间是不允许操作的.  
            System.Threading.ThreadPool.QueueUserWorkItem( _updateme  );//请求一个线程池中的线程 , 让他完成一个操作 这个操作_updateme  .
        }
          public delegate void d_updateme(); 用于回调的委托 .
          public void _updateme(object state )     供给线程调用的函数.
        {
            AsyncCallback ac=new AsyncCallback(updateme_);           创建一个回调 . 回调函数updateme_        
            GetALog gal = new GetALog(BLL.Traffic.GetALog);把要执行的代码创建到委托里 .
            IAsyncResult result = gal.BeginInvoke(LogDateTime,  _VDI , ac, gal);         开始执行该委托.  
        }
        public void updateme_(IAsyncResult iar) ///这里是回答内容.
        {
            GetALog gal = (GetALog)iar.AsyncState;委托转换 .
            DataTable t = gal.EndInvoke(iar); 调用结束委托方法,取得返回值 .
            this.BeginInvoke(new duupdateme(uupdateme), t); 调用窗体中的uupdateme函数 ,使得使用t值,
           这个地方我没太注意, 我不知道回调是由窗体线程还是刚才线程池中的线程.
        }
        delegate void duupdateme(DataTable t); //委托 .

        private void uupdateme(DataTable t )
        {
这个函数中就是处理数据的.

}
上一篇:给串口发送16进制字符串命令和包括16进制命令转换为字节数组


下一篇:使用嵌套字用FTP协议进行文件上传下载!