private void CloseSelectedProcesses() { while (_runcloseProcessesThread) { _closeProcessesThreadResetEvent.Reset(); _closeProcessesThreadResetEvent.WaitOne(); var terminatedPidList = new List <int>(); foreach (var process in WaitingForTerminateProcessList) { try { if (!process.CloseMainWindow()) { process.Kill(); } terminatedPidList.Add(process.Id); RefreshDataInvoker(process.Id); AddEventLog("Terminated process: " + process.ProcessName); } catch (Exception ex) { AddEventLog(ex.Message); } } WaitingForTerminateProcessList.RemoveAll(p => terminatedPidList.Contains(p.Id)); } }
private void btnTerminate_Click(object sender, EventArgs e) { try { foreach (var item in ProcessListbox.SelectedItems) { ProcessListboxItem listItem = item as ProcessListboxItem; if (listItem == null) { continue; } Process localById = Process.GetProcessById(listItem.PID); if (!WaitingForTerminateProcessList.Contains(localById)) { WaitingForTerminateProcessList.Add(localById); } } _closeProcessesThreadResetEvent.Set(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }