收集被修改;枚举操作可能无法执行

时间:2010-01-14 18:18:24

标签: c# multithreading collections

我遇到了DataTable的问题。当我跑到客户端时,它抛出一个Exception,并在foreach中提到“in”。

  

收藏被修改;枚举操作可能不会执行。

这是代码:

foreach (DataRow dr in stStatusTable.Rows)
{
    if (Convert.ToInt32(dr["st_id"]) == stStatus.st_id)
    {
        dr["st_id"] = Convert.ToInt32(dr["st_id"]) + 1;
        dr.AcceptChanges();

    }
    else
    {

        stStatusTable.Rows.Add(stStatus.st_id, stStatus.st_name, stStatus.RTime, stStatus.Total_Mark, stStatus.Completed);
    }
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

因为你在枚举它们的同时添加行..

您应该将行添加到第二个干净的数据表中,然后在循环之后将行从新数据表复制到原始数据表。

答案 1 :(得分:2)

使用for循环而不是foreach循环。

但是,添加/删除项目时请注意索引。