无法在foreach循环中处理DataTable

在我的Dispose方法中,我将处理数据集所具有的所有内容,如下所示:

foreach (DataTable myTable in this.Tables) { myTable.Dispose(); } 

这里this.Tables是public DataTableCollection Tables { get; } public DataTableCollection Tables { get; }

我有大约56张桌子。桌子接近这个电话。

它可以很好地用于几个表但突然抛出:

System.InvalidOperationException:集合修改错误

我不确定为什么会这样。

我试图搜索这个exception很多,但我不能理解为什么它在我的应用程序中破坏。

可能是因为线程? 或者我需要将其转换为列表?

例外情况是因为集合在枚举时会被修改。 这个答案解释得很好。

区别在于您枚举的是DataTableCollection ,它不是通用集合,因此链接答案中的解决方案在这种情况下不适用。 您可以将集合强制转换为通用集合,然后枚举它。

 foreach (DataTable thisTable in this.Tables.Cast().ToArray())