.NET 4.x Корректное завершение приложения - C#

Узнай цену своей работы

Формулировка задачи:

Хай! Подскажите, кто в курсе, как послать сигнал завершения приложения (не убивая процесс) из другого приложения. Сенкс!

Решение задачи: «.NET 4.x Корректное завершение приложения»

textual
Листинг программы
/// <summary>
        /// Закрытие процесса при совпадении имени и если есть аргумента, 
        /// игнорирование процессов с совпадающим аргументом.
        /// </summary>
        /// <param name="processName">Наименование процесса</param>
        /// <param name="appKey">Аргумент игнорирования</param>
        /// <param name="waitForExitSec">Сколько ожидать времени для выхода процесса в сек.</param>
        /// <returns>Возвращает False, если хотя бы один из найденных процессов не закрылся 
        /// и Null если процессы не были найдены</returns>
        public static bool? CloseProcessByName(string processName, string appKey, int waitForExitSec)
        {
            bool? closed = null;
            string wmiQuery = string.Format("select ProcessId, CommandLine from Win32_Process where Name like '%{0}%'", processName);
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
            ManagementObjectCollection retObjectCollection = searcher.Get();
            foreach (ManagementObject retObject in retObjectCollection)
            {
                string sp = String.Format("{0}", retObject["ProcessId"]);
                int pid = int.Parse(sp);
                string cml = String.Format("{0}", retObject["CommandLine"]);
                
                if (appKey == null || !cml.ToLower().Contains(appKey))
                {
                    closed = closed ?? true;
                    try
                    {
                        Process proc = Process.GetProcessById(pid);
                        proc.CloseMainWindow();
                        closed &= proc.WaitForExit(waitForExitSec * 1000);
                    }
                    catch (ArgumentException)
                    {
                        // игнорировать маловероятную ошибку связанную с истекшим сроком действия идентификатора.
                    }
                }
            }
            return closed;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы