【问题标题】:Collection was modified; enumeration operation might not execute [duplicate]收藏已修改;枚举操作可能无法执行[重复]
【发布时间】:2010-01-14 18:18:24
【问题描述】:

我遇到了 DataTable 的问题。当我跑到客户端时,它会抛出一个异常并在 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);
    }
}

我该如何解决这个问题?

【问题讨论】:

  • 这与 WCF 有什么关系?删除了标签。
  • 项目完全是使用 wcf 构建的,这是回调函数
  • 我什至不确定这是什么语言。
  • @ericx: WCF 是否与这个问题相关?只有当您的项目恰好是 WCF 时才会发生这种情况吗?

标签: c# multithreading collections


【解决方案1】:

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

但是,在添加/删除项目时要小心索引。

【讨论】:

  • 你的问题到底出在哪里?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-12-07
    • 2012-04-01
    相关资源
    最近更新 更多