读书人

线程导致InvalidOperationException无

发布时间: 2013-06-25 23:45:41 作者: rapoo

线程导致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)
{
Thread [] newTh=new Thread[count;


for (int i = 0; i <count; i++)//多少个线程

读书人网 >C#

热点推荐