系统环境:windows XP+2P3+.net 2005
后台数据库(另外一台电脑):Sql 2000
程序在下面的循环中出现错误
foreach (DataRowView drv in changeOrderMateriDetail.DefaultView)
            {
                this.progressBar1.Value += 1;
                this.setControlText(this.lblNumber, this.progressBar1.Value + "/" + this.progressBar1.Maximum);
                string tmpOrder = drv["指令號"].ToString().Trim();
                string tmpMaterial = drv["料號"].ToString().Trim();
                string tmpFilterSQL = " 指令號='" + tmpOrder + "' and 料號='" + tmpMaterial + "'";
                order = tmpOrder;
                material = tmpMaterial;
                //1.查询指令号和料號的數量和總金額
                Int32 tmpQty = 0;
                decimal tmpMoney = 0;
                DataRow dr = this.myDataSet.Tables["V_" + dbfName + "_Sum"].Rows.Find(new object[] { drv["指令號"], drv["料號"] });
                if (dr != null)
                {
                    tmpQty = Convert.ToInt32(dr[updateSqlField_Total]);
                    if (updateSqlField_Money != "")
                        tmpMoney = Convert.ToDecimal(dr[updateSqlField_Money]);
                }
                //2.查詢后台SQL中是否有數據
                string sqlCommand = "select count(*) as cnt from " + updateSqlTable + " where " + tmpFilterSQL;
                object tmp = ChenYueJun.DataAccessLibrary.SqlDataAccess.ExecuteSingle(sqlCommand);
                //if(tmpOrder=="資材倉" && tmpMaterial=="ZC01ITIF001" || this.progressBar1.Value==63)
                //{
                //    string t=tmpMaterial;
                //}
                if (updateSqlField_Money != "")
                {
                    if (Convert.ToInt16(tmp) == 0)
                        sqlCommandArray.Add("insert into " + updateSqlTable + "(指令號,料號," + updateSqlField_Total + "," + updateSqlField_Money + ",異動日期) values('" + tmpOrder + "','" + tmpMaterial + "'," + tmpQty + "," + tmpMoney + ",'" + changeDate.ToString("yyyy-MM-dd") + "')");
                    else
                        sqlCommandArray.Add("update " + updateSqlTable + " set " + updateSqlField_Total + "=" + tmpQty + "," + updateSqlField_Money + "=" + tmpMoney + ",異動日期='" + changeDate.ToString("yyyy-MM-dd") + "' where " + tmpFilterSQL);
                }
                else
                {
                    if (Convert.ToInt16(tmp) == 0)
                        sqlCommandArray.Add("insert into " + updateSqlTable + "(指令號,料號," + updateSqlField_Total + ",異動日期) values('" + tmpOrder + "','" + tmpMaterial + "'," + tmpQty + ",'" + changeDate.ToString("yyyy-MM-dd") + "')");
                    else
                        sqlCommandArray.Add("update " + updateSqlTable + " set " + updateSqlField_Total + "=" + tmpQty + ",異動日期='" + changeDate.ToString("yyyy-MM-dd") + "' where " + tmpFilterSQL);
                }
            }
错误信息:
CLR 在過去 60 秒一直無法從 COM 內容 0x1a4ff8 轉換為 COM 內容 0x1a5168。擁有該目的內容/Apartment 的執行緒,很可能正在進行非提取等候或正在處理非常長的執行作業,而未提取 Windows 訊息。這種情況通常會對效能產生負面影響,甚至可能導致應用程式停止回應,或導致記憶體使用量持續隨時間而累積。若要避免這個問題,所有單一執行緒的 Apartment (STA) 執行緒都應該使用提取等候基本方法 (例如 CoWaitForMultipleHandles),並且在長時間的執行作業中定期提取訊息。说明:1.不知道哪行出错,是在运行这个循环时,突然弹出此错误信息,无法点击代码页.
2.循环中所用的自定义方法不存在问题.

解决方案 »

  1.   

    怎么是繁体字啊,看着好吃力啊,帮你顶吧。
      

  2.   

    加断点调试不就知道哪行出错了。
      

  3.   

    我都说了,无法加断点调试"1.不知道哪行出错,是在运行这个循环时,突然弹出此错误信息,无法点击代码页.".我的程序是在调试时出现此错误的.弹出此错误信息的对方框是在最上层,无法查看断点.无法点击此框外的其它内容.
    今天早上我编译程序后直接运行程序,却又没有出现错误.但调试时,却又出现此错误.