public void ExecuteAddCommand() { if (SelectedStationAvailable != null && !SelectedStations.Contains(SelectedStationAvailable)) { selectedStations.Add(SelectedStationAvailable); } }
public SettingsVM(ISimulator simulator) { this._simulator = simulator; SynchronizationContext uiContext = SynchronizationContext.Current; // start threads for async operations with UI-Context Stations = new ObservableCollection <StationVM>(); Task.Run(() => LoadStationsAsync(uiContext)); MeasurementTypes = new ObservableCollection <MeasurementType>(); Task.Run(() => LoadTypesAsync(uiContext)); // register event handlers to watch for simulation status changes simulator.IsSimulatingChanged += value => IsSimulating = value; simulator.StationIsInSimulationChanged += (added, station) => { if (added) { SelectedStations.Add(station); } else { for (int i = 0; i < SelectedStations.Count; i++) { if (SelectedStations[i].Id == station.Id) { SelectedStations.RemoveAt(i); } } } PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedStations))); UpdateSimulationReady(); }; }
public void AddStation(Station station) { if (!StationIsInSimulation(station)) { SelectedStations.Add(station); StationIsInSimulationChanged?.Invoke(true, station); } }
public void StartSimulator() { IsSimulating = true; IsSimulatingChanged?.Invoke(IsSimulating); _tokenSource = new CancellationTokenSource(); var token = _tokenSource.Token; if (IsLoadTesting) { SelectedStations.ForEach(station => { Task.Run(() => Simulate(station, token), token); _runningTasks++; }); } else { Task.Run(() => Simulate(CurrentStation, token), token); _runningTasks++; } }
public bool StationIsInSimulation(Station station) { return(SelectedStations.FindAll(s => s.Id == station.Id).Any()); }
public void RemoveStation(Station station) { SelectedStations.RemoveAll(s => s.Id == station.Id); StationIsInSimulationChanged?.Invoke(false, station); }