线程导致InvalidOperationException无效操作。连接被关闭异常
当我将循环 dt.Rows.Count改为1时,不会出现“InvalidOperationException无效操作。连接被关闭异常”,改为dt.ROws.Count时,会出现“InvalidOperationException无效操作。连接被关闭异常”这是怎么回事?大神帮帮忙,急。。。。。。。。。
public void thread_insert1()
{
try
{
DataTable dt =getDataTable();
Thread [] newTh=new Thread[dt.Rows.Count];
for (int i = 0; i < dt.Rows.Count; i++)//多少个线程
{
string str = dt.Rows[i]["rtuid"].ToString();
newTh[i] = new Thread(new ParameterizedThreadStart(Data_insert1));
newTh[i].IsBackground = true;
newTh[i].Name = i.ToString().Trim();
newTh[i].Start(str);
Thread.Sleep(5000);
//newTh[i].Join();
}
}
catch (Exception)
{
throw;
}
}
------解决方案--------------------是不是你的数据量太大了
------解决方案--------------------你循环内部就线程 Start了,你线程中干了什么,如果影响到了dt的话,那么就会动态的改变dt,或者改变数据库连接,导致下一个循环时出错,把start放到循环外试试
------解决方案--------------------dt.Rows.Count会不会等于0 呢?
这样定义一个变量 int count=dt.Rows.Count;
再
if(count>0)
{
&nbs