首先,在我的代码开头我声明了一个 ArrayList public ArrayList ArrivalsInApp = new ArrayList();
。然后,很久以后,我从 XML 文件下载一些数据。对于每个名为“flight”的 XmlNode,我正在创建一个面板。
在创建面板时,我将其名称添加到ArrivalsInApp
ArrayList 中。面板的生成是一种方法。该方法有几个 foreach 循环和 IF 条件。从技术上讲,它所做的一切都是决定是否应该创建 Panel(如果它在 XML 中而不是在应用程序中)、更新(在两者中)或删除(在应用程序中但不在 XML 中)。
在该方法中,我以 XML 格式获取所有航班的名称,并保存到 ArrayList 中。现在使用 foreach,我检查应用程序中的所有航班(因此在 ArrivalsInApp ArrayList 中)是否也在 XML 中。我使用以下代码执行此操作:
foreach (string y in ArrivalsInApp)
{
if (XmlArrivals.Contains(y) == false)
{
*code*
}
}
“决定”方法在 form1_load 上调用,每 30 秒使用一个 Timer。当计时器达到指定值时,我重新加载 XML,然后调用该方法。但是,我收到了一个 InvalidOperationException,并附有“集合已修改;枚举操作可能无法执行”的注释。在线foreach (string y in ArrivalsInApp)
。我完全绝望,我不知道是什么原因造成的。
如果我运行 .exe 文件(如果我只是调试它,在计时器达到该值后,程序会关闭并显示此错误)会发生什么,无论是否应该更新或删除面板都会被删除,并且弹出未处理的异常错误。对不起,如果解释有点混乱。如果有人希望我发布整个源文件(可能是整个项目),请告诉我。但是,由于它现在有大约 1800 行代码,因此需要大量解释。