编写相互更新的Windows服务的正确方法是什么?

问题描述:

我有两个Windows服务,我们将调用X和Y. X处理我的应用程序的一般功能,并且Y存在以保持X最新。它通过检查更新到十做到这一点。如果他们的存在,它的下载它们,关闭X,在新的文件的副本,并重新启动X.编写相互更新的Windows服务的正确方法是什么?

不过,我想y以做同样的事情为X但我担心的是,每种服务都有可能关闭对方,这意味着他们永远不会重新启动。

我能想到的三种解决方案:

  1. 保持第三的服务,Z,其 从不更新,即只检查 如果超过一分钟的每个服务已被关闭 ,如果所以, 重新启动它们。这不会是一个 坏东西,无论如何,但它 似乎是我想要 能够更新,其中 再次引入原始问题, 。
  2. 维护注册表中的锁定, ,使X在执行更新之前检查Y是否已更新 ,反之亦然 。
  3. 让每个服务在其OnStop方法中启动其他服务。不过,这看起来有点不妥。

什么是解决这个问题的妥善解决?

我结束了使用System.Threading.Mutex。这两种服务将始终运行在同一台机器上,所以这是一个超级简单的解决方案。