日期:2014-05-20  浏览次数:20863 次

多线程的问题,,请教各位,请进,谢谢各位了,在线等
下面这个是动态调用webservice,返回了一个DataSet数据集,数据集里面有10多个DataTable,我这里用了一个循环动态调用webservice(******请看 <注释1> ***)*),当第一次调用webservice得到DataSet,然后创建一个线程调用ExcuteImport来导入数据(*****请看 <注释2> ****).
现在问题是:在第一个线程调用得到数据集DataSet,调用ExcuteImport循环取DataTable(****请看 <注释3> *****)时,同时第二个线程取得DataSet会把第一个线程得到Dataset复盖掉了,,,怎么解决这个问题,,
不知道我的问题有没有说清楚,谢谢各位了,在线等
-----------------------------------
public   DataSet   _ds;
public   DataSet   Ds
{
get
{
return   _ds;
}
set
{
_ds=value;
}
}
-------------------------------------------------
private   void   ***()
{
...............................
xmllist=ReadData();
for(int   i=0;i <xmllist.Count;i++)////// <注释1>
{

CLDataSet   clds=new   CLDataSet();
localhost.MyWebService   myweb=new   localhost.MyWebService( "http:// "+xmllist[i].ToString()+ "/webxml/MyWebService.asmx ");
_ds=myweb.SQLDB( "sdf ");

Thread   thd   =   new   Thread(   new   ThreadStart(ExcuteImport));////// <注释2>
j=i+1;
thd.Name= "子线程 "+j;
thd.Start();
}
}
------------------------------------------------------
private   void   ExcuteImport()
{
    .........
    for(int   i=0;i <14;i++)/////// <注释3>
    {
        DataTable   datatab=new   DataTable();

        datatab=Ds.Tables[i];
        try
      {
            ImportData(datatab);
      }
      catch(Exception   ex)
      {
      message.Items.Add(Thread.CurrentThread.Name+ "异常消息: "+ex.Message.ToString());
      Thread.CurrentThread.Abort();
      Thread.CurrentThread.Join();
        }
        Thread.Sleep(5000);
      }
.................
}

------解决方案--------------------
不会,帮顶。
------解决方案--------------------
帮顶
------解决方案--------------------
前一个线程未结束,新的线程已经开始了,数据库在没有被使用的时候已经被下一次的复制操作修改了