.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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д