示例#1
0
        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));
            }
        }
示例#2
0
        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);
            }
        }