执行循环时出现错误消息

时间:2015-11-03 12:08:23

标签: c# mysql loops

我在C#中执行循环时出现错误消息;

  

CLR无法从COM上下文0x1201050转换为   COM上下文0x1201108持续60秒。拥有的线程   目的地上下文/公寓很可能要么做非   抽空等待或处理很长时间的运行操作   抽取Windows消息。这种情况一般都是消极的   性能影响甚至可能导致应用程序变为非   响应或内存使用随着时间的推移不断累积。至   避免这个问题,所有单线程单元(STA)线程都应该   使用抽取等待原语(如CoWaitForMultipleHandles)和   在长时间运行期间定期泵送消息。

我知道是什么导致了这个问题,它是一个for循环,它将8000多人添加到MySQL的表中。即使我知道循环是问题,我在C#之前从未遇到过这个问题,我不确定如何处理它。这是导致问题的循环;

    public void WriteToMySQL(DataTable dTable)
    {
        int id;
        string firstName, middleName, lastName, formalName, title, company;

        for (int i = 0; i < 8094; i++)
        {
            id = Convert.ToInt32(dTable.Rows[i][0]);
            firstName = dTable.Rows[i][1].ToString();
            middleName = dTable.Rows[i][2].ToString();
            lastName = dTable.Rows[i][3].ToString();
            formalName = dTable.Rows[i][4].ToString();
            title = dTable.Rows[i][5].ToString();
            company = dTable.Rows[i][6].ToString();

            using (MySqlConnection mysqlCon = new MySqlConnection(mysqlConstr))
            {
                mysqlCon.Open();
                var mysqlCmd = new MySqlCommand("INSERT INTO sdcdatabase.people VALUES(@id, @firstname, @middlename, @lastname, @formalname, @title, @company)", mysqlCon);
                mysqlCmd.Parameters.AddWithValue("@id", id);
                mysqlCmd.Parameters.AddWithValue("@firstname", CharactersOnly(firstName));
                mysqlCmd.Parameters.AddWithValue("@middlename", CharactersOnly(middleName));
                mysqlCmd.Parameters.AddWithValue("@lastname", CharactersOnly(lastName));
                mysqlCmd.Parameters.AddWithValue("@formalname", CharactersOnly(formalName));
                mysqlCmd.Parameters.AddWithValue("@title", CharactersOnly(title));
                mysqlCmd.Parameters.AddWithValue("@company", CharactersOnly(company));
                mysqlCmd.ExecuteNonQuery();
            }
        }
    }

CharactersOnly只会删除string中不属于某个字符的所有内容。我理解并且可能知道有更好的方法来做到这一点,但是我还没有更好地解决问题。有没有办法纠正不会导致C#60秒后抱怨的循环?

0 个答案:

没有答案