Как программно проверить, зависло ли приложение в VB.NET
Мне нужно написать программу мониторинга / наблюдения, чтобы проверить серию приложений
Программа мониторинга должна быть в состоянии
- Определите, зависли ли приложения, которые он отслеживает, или нет ответа
- Если зависает, перезапустите конкретное приложение
Какой API в VB.NET может помочь мне достичь этого?
любой пример кода будет очень полезным
2 ответа
Вы можете использовать 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.
Это очень простой пример, но я надеюсь, что он направит вас в правильном направлении.
Роланд Бар опубликовал хорошую статью в 2004 году на codeproject.com, в которой рассказывается, почему и как это сделать:
http://www.codeproject.com/Articles/8349/Observing-Applications-via-Heartbeat