Как программно проверить, зависло ли приложение в VB.NET - PullRequest
5 голосов
/ 22 марта 2012

Мне нужно написать программу мониторинга / контроля, чтобы проверить серию приложений

Программа мониторинга должна иметь возможность

  1. Определите, зависает ли приложение, которое оно отслеживает, или нет ответа.
  2. Если зависает, перезапустите конкретное приложение

Какой API в VB.NET может помочь мне в этом?

любой пример кода будет очень полезен

Ответы [ 2 ]

5 голосов
/ 22 марта 2012

Вы можете использовать System.Diagnostics.Process, чтобы запустить / найти процессы, которые вы смотрите.В зависимости от приложений, которые вы смотрите, вы можете использовать что-то вроде этого:

For Each proc As Process In System.Diagnostics.Process.GetProcesses
  If proc.ProcessName = "notepad" Then
    If proc.Responding = False Then
      ' attempt to kill the process
      proc.Kill()

      ' try to start it again
      System.Diagnostics.Process.Start(proc.StartInfo)
    End If
  End If
Next

Определить, «зависло» ли приложение, не всегда понятно.Это может быть просто занято чем-то.Также для Process.Responding требуется MainWindow.

Это очень простой пример, но я надеюсь, что он укажет вам правильное направление.

1 голос
/ 15 мая 2012

Роланд Бар опубликовал хорошую статью в 2004 году на codeproject.com, в которой описано, почему и как это сделать:

http://www.codeproject.com/Articles/8349/Observing-Applications-via-Heartbeat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...