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 )
这个函数中就是处理数据的.
}