private async void RefreshGrid() { while (true) { await Task.Run(() => { Thread.Sleep(5000); Application.Current.Dispatcher.Invoke(delegate { try { lock (ProcessesList) { List <ProcessListItem> itemsToRemove = ProcessesList.Where(proc => !ProcessesManager.Processes.ContainsKey(proc.ProcessID)).ToList(); foreach (ProcessListItem p in itemsToRemove) { ProcessesList.Remove(p); } List <ProcessListItem> itemsToAdd = ProcessesManager.Processes.Values.Where(proc => !ProcessesList.Contains(proc)).ToList(); foreach (ProcessListItem p in itemsToAdd) { ProcessesList.Add(p); } } } catch (Exception e) { MessageBox.Show(e.Message); } }); }); } }
private void KillProcess(object obj) { try { foreach (Process proc in Process.GetProcessesByName(SelectedProcess.ProcessName)) { proc.Kill(); } foreach (var itemToRemove in ProcessesList.Where(x => x.ProcessName == SelectedProcess.ProcessName).ToList()) { ProcessesList.Remove(itemToRemove); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }