Есть два приложения: 1-Windows application, 2-Windows Service. Второе приложение стартует и останавливается с первого в новом процессе.
Задача: реализовать взаимный контроль двух программ. То есть, в случае подвисания Сервиса, Виндовое приложение его перегружает и наоборот Сервис перегружает Виндовое при зависании второго.
Вопрос: каким образом обнаружить, что какое-то приложение повисло?
Здравствуйте, AlexDav, Вы писали:
AD>Здравствуйте, SpeedLover, Вы писали:
SL>>Есть два приложения: 1-Windows application, 2-Windows Service. Второе приложение стартует и останавливается с первого в новом процессе.
SL>>Задача: реализовать взаимный контроль двух программ. То есть, в случае подвисания Сервиса, Виндовое приложение его перегружает и наоборот Сервис перегружает Виндовое при зависании второго.
SL>>Вопрос: каким образом обнаружить, что какое-то приложение повисло?
AD>Я думаю можно запрашивать друг у друга системное время — и сверять, если запрос вернул не верное — значит висит.
Если висит, то вообще не вернет.
Здравствуйте, Andrbig, Вы писали:
AD>>Я думаю можно запрашивать друг у друга системное время — и сверять, если запрос вернул не верное — значит висит.
A>Если висит, то вообще не вернет.
Это смотря как запрашивать, если ждать то конечно, а если к примеру как-нить асинхронно и через какое то время после запроса проверять ну например разделяемый ресурс, то вот и ответ — данные старые — висим.
Здравствуйте, AlexDav, Вы писали:
AD>Здравствуйте, Andrbig, Вы писали:
AD>>>Я думаю можно запрашивать друг у друга системное время — и сверять, если запрос вернул не верное — значит висит.
A>>Если висит, то вообще не вернет.
AD>Это смотря как запрашивать, если ждать то конечно, а если к примеру как-нить асинхронно и через какое то время после запроса проверять ну например разделяемый ресурс, то вот и ответ — данные старые — висим.
Я тоже задумывался над этим. У сервиса есть возможность через ServiceController вызывать функцию с аргуметом типа int. Если она не возвращается через заданное время, можно делать рестарт.
msdn