Служба монитора процессов в Windows

998
Ahmed Al Hafoudh

Мне нужно что-то, что работает в фоновом режиме как служба (Windows), наблюдает за определенным процессом, и когда он пересекает пороги, он перезапускает / останавливает / запускает процесс снова? (похожая функциональность rubygem называется " бог ")

У меня есть программное обеспечение для сетевой камеры, которое работает как сервер, но не поддерживает работу в качестве службы Windows. Он также перестает отвечать один раз в день. Когда это происходит, я вижу, что объем памяти падает ниже 10 МБ. Обычно это около 20-30 МБ в оперативной памяти.

0

1 ответ на вопрос

1
James

Если вы знакомы с C #, вы можете попробовать использовать фоновый рабочий для мониторинга процесса и перезапустить его, когда у вас возникнут проблемы.

Например, что-то похожее у меня (для приложения с графическим интерфейсом) выглядит следующим образом

private void startServer() { if (this.CancellationPending == true) { Console.WriteLine("Termination of requested", thisServer.serverSettings.serverName); this.ReportProgress(100); this.Dispose(true); } else { try { thisServer.serverStatus = status.Starting; using (Process p = Process.Start(thisServer.serverStartInfo)) { thisServer.serverProc = p; p.WaitForInputIdle(thisServer.serverSettings.startupDuration.Milliseconds); thisServer.serverStatus = status.Running;  while (p.Responding) { // happy days }  thisServer.serverStatus = status.Unknown; try { p.Close(); thisServer.serverStatus = status.Offline; } catch  { try { p.Kill(); thisServer.serverStatus = status.Offline; } catch { } } }  reRun(); } catch { thisServer.serverStatus = status.Offline; ReportProgress(100, "Error encountered when attempting to launch executable. Please review server settings."); } } } 
Мне нужно что-то автономное. Не саморазвитый. Но это может сработать. У меня есть причины. Ahmed Al Hafoudh 12 лет назад 0