private protected override void OnProcessesAdded(IActiveProcessViewModel[] processViewModels) { foreach (IActiveProcessViewModel activeProcessViewModel in processViewModels) { void ProcessExited(object sender, EventArgs e) { activeProcessViewModel.Process.Exited -= ProcessExited; activeProcessViewModel.PropertyChanged -= DownloadStatusPropertyChanged; OnUIThread(() => { SelectedProcesses.Remove(activeProcessViewModel); Processes.Remove(activeProcessViewModel); }); OnProcessExited(activeProcessViewModel); } void DownloadStatusPropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(DownloadStatus.DownloadState)) { Processes.Refresh(); } } activeProcessViewModel.Process.Exited += ProcessExited; activeProcessViewModel.PropertyChanged += DownloadStatusPropertyChanged; } }
/// <summary> /// Occurs when an algorithm has requested removal from the selected /// algorithms collection /// </summary> /// <param name="sender">The algorithm</param> /// <param name="e">N/A</param> private void _algorithmRemovalRequested(object sender, EventArgs e) { AlgorithmViewModel vm = sender as AlgorithmViewModel; if (vm != null && SelectedProcesses.Contains(vm)) { SelectedProcesses.Remove(vm); } }