关于多线程查询数据填充dataset,并做处理的有关问题
关于多线程查询数据填充dataset,并做处理的问题
我要查询数据库的数据来生成XML,有两种方式,一种是 cs里面生成,一种是数据库生成。总的数据有七八万条。因为xml有特定的格式要求,我感觉,数据库生成与cs生成xml效率方面应该没多大区别,那么,我现在就遇到问题了。查询数据不用显示到UI。
1.如果依次查询数据,填充dataset,然后生成xml,当某个dataset 执行查询填充时,耗时要几分钟,很慢。
2.如果用多线程来查询数据填充dataset,那么,必须要在某个线程执行完成之后,才可以对这个dataset执行处理,否则就会导致表为空。
请问:你们有啥好的解决方案没有?
代码如下,后面的三个查询,数据量基本都是两三万条以上。
------解决方案--------------------
给你个断点 。
------解决方案--------------------
你这是多少个dataset?
按照你的思路 应该是1个吧 然后对于多个table.
不如你试试弄多个dataset 挨个填充呢?
------解决方案--------------------
线程间访问同一资源,加lock啊
自己做个变量来判断也可以.
------解决方案--------------------
一般是一个应用线程(主线程),一个处理线程,否则你得到的数据会出乱子
处理线程
加载完成一个xml返回后再去加载另一个
我要查询数据库的数据来生成XML,有两种方式,一种是 cs里面生成,一种是数据库生成。总的数据有七八万条。因为xml有特定的格式要求,我感觉,数据库生成与cs生成xml效率方面应该没多大区别,那么,我现在就遇到问题了。查询数据不用显示到UI。
1.如果依次查询数据,填充dataset,然后生成xml,当某个dataset 执行查询填充时,耗时要几分钟,很慢。
2.如果用多线程来查询数据填充dataset,那么,必须要在某个线程执行完成之后,才可以对这个dataset执行处理,否则就会导致表为空。
请问:你们有啥好的解决方案没有?
代码如下,后面的三个查询,数据量基本都是两三万条以上。
#region 使用线程查询数据
//获取省、窗口服务平台基本情况表
Thread t1 = new Thread(new ThreadStart(GetFLAT_INFOSData));
t1.Start();
//获取服务机构基本信息表
Thread t2 = new Thread(new ThreadStart(GetSERVICE_ORG_INFOSData));
t2.Start();
//获取省平台、窗口平台聚集服务机构表
Thread t3 = new Thread(new ThreadStart(GetORG_IN_FLATSData));
t3.Start();
//获取服务项目情况表
Thread t4 = new Thread(new ThreadStart(GetSERVICE_ITEMSData));
t4.Start();
//获取企业基本情况表
Thread t5 = new Thread(new ThreadStart(GetORG_INFOSData));
t5.Start();
//获取服务活动表
Thread t6 = new Thread(new ThreadStart(GetSERVICE_ACTIVITYSData));
t6.Start();
#endregion
#region 不使用线程生成XML
//省、窗口服务平台基本情况表
GetFLAT_INFOS();
//服务机构基本信息表
GetSERVICE_ORG_INFOS();
//省平台、窗口平台聚集服务机构表
GetORG_IN_FLATS();
//服务项目情况表
GetSERVICE_ITEMS();
//企业基本情况表
GetORG_INFOS();
//服务活动表
GetSERVICE_ACTIVITYS();
#endregion
------解决方案--------------------
给你个断点 。
------解决方案--------------------
你这是多少个dataset?
按照你的思路 应该是1个吧 然后对于多个table.
不如你试试弄多个dataset 挨个填充呢?
------解决方案--------------------
线程间访问同一资源,加lock啊
自己做个变量来判断也可以.
------解决方案--------------------
一般是一个应用线程(主线程),一个处理线程,否则你得到的数据会出乱子
处理线程
加载完成一个xml返回后再去加载另一个