错误“收集已修改;枚举操作可能不会执行”,当aforeach
循环在循环执行过程中修改的集合上进行迭代时。 这通常会发生在循环本身或另一个线程中的集合中添加或删除项目时。
词典迭代的方法中显示了此错误。该问题源于NotifySubscribers()
>方法,该方法可能会间接修改subscribers
字典时,SignalData
>正在运行。 如果subscribers
触发订户的添加或删除,这可能会发生。NotifySubscribers()
>
SignalData
解决方案是在输入循环之前创建集合的副本
使用>创建一个包含
快照的新列表。 现在,<code class="language-csharp">foreach (Subscriber s in subscribers.Values.ToList()) { // Notify subscriber s }</code>循环在此独立副本上运行,以确保对原始字典的修改不会导致错误。 这保证了安全可靠的枚举。
以上是为什么修改了我的' foreach”循环扔一个集合;枚举操作可能不会执行”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!