private void UpdateLostTrain() { foreach (var item in LoseTrain.Keys) { string TrainSection = (Convert.ToInt16(LoseTrain[item][1]) * 256 + Convert.ToInt16(LoseTrain[item][0])).ToString(); string RailSwitch = (Convert.ToInt16(LoseTrain[item][2])).ToString(); if (TraverseSection(TrainSection) != null) { Section section = TraverseSection(TrainSection); if (!section.HasNonComTrain.Contains(item)) { section.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke( new Action( delegate { section.InvalidateVisual(); })); } else if (TraverseRailSwitch(TrainSection, RailSwitch) != null) { RailSwitch railswitch = TraverseRailSwitch(TrainSection, RailSwitch); if (railswitch.HasNonComTrain.Contains(item)) { railswitch.HasNonComTrain.Add(item); } System.Windows.Application.Current.Dispatcher.Invoke(new Action(delegate { railswitch.InvalidateVisual(); })); } } }