У меня проблемы с сохранением ListBox обновленным дочерними объектами.
Я использую два List
с, общий и текущий, и таймер; каждые 1000 мс запрашивается текущий набор дочерних объектов, который добавляется в мой общий список. Мой текущий список создается только с текущими элементами ( прочитано не общее).
Затем я сравниваю общий список и текущий список. Любые объекты в общем списке, не найденные в текущем списке, удаляются, а затем каждый объект из общего списка затем добавляется в ListBox.
private List<IAgStkObject> _liveListOfEntities;
private List<IAgStkObject> _totalListOfEntities = new List<IAgStkObject>();
private void UpdateEntityList() {
IAgStkObjectElementCollection stkScenarioEntities;
if (_stkObjectRoot.HasChildren) {
_liveListOfEntities = new List<IAgStkObject>();
foreach (AgESTKObjectType typeOfElement
in Enum.GetValues(typeof(AgESTKObjectType))) {
stkScenarioEntities =
_stkObjectRoot.CurrentScenario.Children.GetElements(typeOfElement);
foreach (IAgStkObject entity in stkScenarioEntities) {
_liveListOfEntities.Add(entity);
if (!_totalListOfEntities.Contains(entity)) {
_totalListOfEntities.Add(entity);
}
}
}
foreach (IAgStkObject entity in _totalListOfEntities) {
if (!_liveListOfEntities.Contains(entity)) {
// remove
_totalListOfEntities.Remove(entity);
}
else if (!lsbEntities.Items.Contains(entity.InstanceName)) {
lsbEntities.Items.Add(entity.InstanceName);
}
}
}
Я получаю исключение при удалении любого объекта: Collection was modified; enumeration operation may not execute.