在我的Dispose方法中,我正在处理数据集中的所有内容,如下所示:
foreach (DataTable myTable in this.Tables)
{
myTable.Dispose();
}
此处.Tables为public DataTableCollection Tables { get; }
我有大约56张桌子。桌子接近这个电话。
它适用于几张桌子,但突然之间抛出:
System.InvalidOperationException: 集合修改错误
我不确定为什么会这样。
我试图经常搜索这个异常,但我不知道为什么它会破坏我的应用程序。
可能是因为线程?或者我需要将其转换为列表?
答案 0 :(得分:4)
例外是因为在枚举时会修改集合。 This answer解释得很清楚。
不同之处在于您枚举DataTableCollection
,这不是通用集合,因此链接答案中的解决方案不适用于此情况。您可以将集合强制转换为通用集合,然后枚举它。
foreach (DataTable thisTable in this.Tables.Cast<DataTable>().ToArray())