日期:2014-05-17  浏览次数:21377 次

线程导致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