多线程的问题,,请教各位,请进,谢谢各位了,在线等
下面这个是动态调用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);
}
.................
}
------解决方案--------------------不会,帮顶。
------解决方案--------------------帮顶
------解决方案--------------------前一个线程未结束,新的线程已经开始了,数据库在没有被使用的时候已经被下一次的复制操作修改了