У меня есть две службы Windows, мы будем называть X и Y. X отвечает за общую функциональность моего приложения, и Y существует, чтобы поддерживать X в актуальном состоянии. Это выполняется путем проверки обновлений X. Если они существуют, он загружает их, выключает X, копирует новые файлы и перезапускает X.
Тем не менее, я бы хотел, чтобы Y сделал то же самое для X. Однако я обеспокоен тем, что каждая служба может закрыть друг друга, то есть они никогда не перезапустятся.
Я могу придумать три решения:
- Поддерживать третий сервис, Z, который
никогда не обновляется, что только проверяет
если каждая служба была закрыта
более минуты, и если да,
перезапускает их. Это не было бы
все равно плохо иметь, но это
кажется, что-то, что я хотел бы
чтобы иметь возможность обновить, который
вводит исходную проблему,
еще раз.
- Поддержание блокировки в реестре,
так что X проверяет, обновлен ли Y
прежде чем делать само обновление, и
наоборот.
- Каждый сервис запускает другие сервисы в своем методе OnStop. Это кажется немного хакерским.
Как правильно решить эту проблему?