关于多线程查询数据填充dataset,并做处理的有关问题

关于多线程查询数据填充dataset,并做处理的问题
我要查询数据库的数据来生成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返回后再去加载另一个