Как правильно написать службы Windows, которые обновляют друг друга? - PullRequest
1 голос
/ 28 мая 2010

У меня есть две службы Windows, мы будем называть X и Y. X отвечает за общую функциональность моего приложения, и Y существует, чтобы поддерживать X в актуальном состоянии. Это выполняется путем проверки обновлений X. Если они существуют, он загружает их, выключает X, копирует новые файлы и перезапускает X.

Тем не менее, я бы хотел, чтобы Y сделал то же самое для X. Однако я обеспокоен тем, что каждая служба может закрыть друг друга, то есть они никогда не перезапустятся.

Я могу придумать три решения:

  1. Поддерживать третий сервис, Z, который никогда не обновляется, что только проверяет если каждая служба была закрыта более минуты, и если да, перезапускает их. Это не было бы все равно плохо иметь, но это кажется, что-то, что я хотел бы чтобы иметь возможность обновить, который вводит исходную проблему, еще раз.
  2. Поддержание блокировки в реестре, так что X проверяет, обновлен ли Y прежде чем делать само обновление, и наоборот.
  3. Каждый сервис запускает другие сервисы в своем методе OnStop. Это кажется немного хакерским.

Как правильно решить эту проблему?

1 Ответ

1 голос
/ 08 июня 2010

В итоге я использовал System.Threading.Mutex. Обе службы всегда будут работать на одной и той же машине, поэтому это очень простое решение.

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