Проверить, что завершен процесс - C#

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

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

Запущено приложение "Abbyy" в случае если пользователь закрывает "Abbyy", моя программа должна это отловить и вызвать сообщение. Только не работает. После того как пользователь закрывает приложение, программа все равно остается в списке процессов. Вот такой код
 private void timer1_Tick(object sender, EventArgs e)
        {
                Process[] procList = Process.GetProcesses();//Получаем список запущенных процессов
                string[] Str = new string[procList.Length];
                for (int i = 0; i < procList.Length; i++)
                {
                    Str[i] = procList[i].ToString();
                    if (procList[i].ToString() == "System.Diagnostics.Process (Abbyy)")
                        return;
                }               
                MessageBox.Show("Приложение закрыто");
            }
Как отловить закрытие программы пользователем?

Решение задачи: «Проверить, что завершен процесс»

textual
Листинг программы
void Form1_Load(object sender, EventArgs args)
{
    Process[] processes = Process.GetProcessesByName("abbyy");
    if (processes.Length == 0)
        MessageBox.Show("Ничего не запущено");
    else
    {
        foreach (var proc in processes)
        {
            proc.EnableRaisingEvents = true;
            proc.Exited += OnExited;
        }
    }
}
 
void OnExited(object sender, EventArgs args)
{
    Process p = (Process)sender;
    p.Exited -= OnExited;
    p.Dispose();
    
    MessageBox.Show("Приложение закрыто");
}

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


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

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

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