下面这个是动态调用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);
   }
.................
}