예제 #1
0
        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;
            }
        }
예제 #2
0
        /// <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);
            }
        }