/*private void RemoveAllDrivers() * { * if (!Application.Current.Dispatcher.CheckAccess()) * { * Application.Current.Dispatcher.Invoke(RemoveAllDrivers); * return; * } * * lock (_lockObject) * { * _driverNameTimingMap.Clear(); * DriversViewModels.Clear(); * }; * }*/ public void AddDriver(DriverTiming driver) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => AddDriver(driver)); return; } DriverTimingViewModel newViewModel = new DriverTimingViewModel(driver) { ClassIndicationBrush = GetClassColor(driver.DriverInfo) }; lock (_lockObject) { //If possible, rebind - do not create new if (_driverNameTimingMap.ContainsKey(driver.Name)) { _driverNameTimingMap[driver.Name] = driver; RebindViewModel(DriversViewModels.First(x => x.Name == driver.Name), driver); return; } _driverNameTimingMap[driver.Name] = driver; newViewModel.OutLineColor = GetDriverOutline(driver.Name); DriversViewModels.Add(newViewModel); } }
private void AddDrivers(IEnumerable <DriverTiming> drivers) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => AddDrivers(drivers)); return; } try { _loadIndex++; Logger.Info("Add Drivers Called"); List <DriverTimingViewModel> newViewModels = drivers.Select(x => new DriverTimingViewModel(x) { ClassIndicationBrush = GetClassColor(x.DriverInfo), OutLineColor = GetDriverOutline(x.Name) }).ToList(); foreach (DriverTimingViewModel driverTimingViewModel in newViewModels) { lock (_lockObject) { if (_driverNameTimingMap.ContainsKey(driverTimingViewModel.Name)) { continue; } _driverNameTimingMap[driverTimingViewModel.Name] = driverTimingViewModel.DriverTiming; DriversViewModels.Add(driverTimingViewModel); } } _loadIndex--; } catch (Exception ex) { Logger.Error(ex); } Logger.Info("Add Drivers Completed"); }