錯誤“收集已修改;枚舉操作可能不會執行”,當aforeach
循環在循環執行過程中修改的集合上進行迭代時。 這通常會發生在循環本身或另一個線程中的集合中添加或刪除項目時。
詞典迭代的方法中顯示了此錯誤。該問題源於NotifySubscribers()
>方法,該方法可能會間接修改subscribers
字典時,SignalData
>正在運行。 如果subscribers
觸發訂戶的添加或刪除,這可能會發生。 NotifySubscribers()
>
SignalData
解決方案是在輸入循環之前創建集合的副本
使用>創建一個包含
快照的新列表。 現在,<code class="language-csharp">foreach (Subscriber s in subscribers.Values.ToList()) { // Notify subscriber s }</code>循環在此獨立副本上運行,以確保對原始字典的修改不會導致錯誤。 這保證了安全可靠的枚舉。
以上是為什麼修改了我的' foreach”循環扔一個集合;枚舉操作可能不會執行”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!