
//Begin executing the command
IAsyncResult ar=cmd.BeginExecutereader(new AsyncCallback(ProcessData),cmd)
启动异步 *** 作以后,可以不管它而做任何其他工作。在该 *** 作结束时调用指定的回调函数。回调函数如下:
public void processData(IAsyncResult ar)
{
SqlCommand cmd=(SqlCommand)iar.AsyncState
SqlDataReader reader=cmd.EndExecuteReader(iar)
...
}
多线程 *** 作,请确保每个线程 *** 作的SQL语句中的表是相对独立的。 不然,你需要安排线程间的顺序,也就是lock代码段。 同一时间,两个线程一起跑同一句SQL,而且还 *** 作同一张表,那么,肯定就会有问题了。一般这种是因为超出数据库最大链接上限。再建立链接,不管缓存多少,会自动队列消息等待。Timeout时间内没有链接取消无法获得链接权限。可以将自己的数据库链接个数设置大一些。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)