При написании кода для загрузки настроек моего приложения возникла проблема - следующий код выдает InvalidOperationException Ошибка:
For Each c As MapInfo In CurrentMaps
AddMap(c, False)
Next
Отладчик выделяет часть Next , а со страницы MSDN об ошибке это выглядит так, потому что коллекция ( CurrentMaps ) каким-то образом изменилось с момента последнего столкновения перечислителя (для обработки For Each * ).
Не уверен, почему это произойдет, поскольку AddMap принимает MapInfo ByVal и не касается ввода (поэтому коллекция не изменяется).
Я изменил это на это, которое прекрасно работает:
For i As Integer = 0 To CurrentMaps.Count - 1
AddMap(CurrentMaps(i), False)
Next
Они должны работать одинаково, верно? Есть идеи, почему For Each one не работает?
Edit:
А, разобрался - проблема в том, что я использую CurrentMaps в качестве временной переменной (коллекция отслеживает текущие карты), а AddMap обычно используется в приложении для добавления новой карты (что означает как обновление пользовательского интерфейса, так и добавление это в CurrentMaps).
Здесь (при загрузке приложения) я просто использую AddMap для обновления пользовательского интерфейса, но дополнительный вызов для добавления элемента в CurrentMaps все еще был там, поэтому он действительно изменял CurrentMaps.
Спасибо за ввод, все!