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

时间:2010-05-28 19:56:32

标签: windows-services updates

我有两个Windows服务,我们将调用X和Y.X处理我的应用程序的常规功能,并且Y存在以使X保持最新。它通过检查X的更新来完成此操作。如果存在,则下载它们,关闭X,复制新文件,然后重新启动X.

但是,我希望Y为X做同样的事情。但我担心的是,每个服务可能会相互关闭,这意味着它们永远不会重新启动。

我可以想到三个解决方案:

  1. 维持第三项服务Z,其中 永远不会更新,只检查 如果每项服务都已关闭 超过一分钟,如果是这样, 重启他们。这不是一个 不管怎么说,有坏事,但它 看起来像我喜欢的东西 能够更新,哪个 介绍原始问题, 试。
  2. 在注册表中维护锁定, 这样X检查Y是否更新 在进行更新之前,和 反之亦然。
  3. 让每个服务在其OnStop方法中启动其他服务。不过,这似乎有些过时了。
  4. 这个问题的正确解决方案是什么?

1 个答案:

答案 0 :(得分:1)

我最终使用了System.Threading.Mutex。这两种服务总是在同一台机器上运行,所以这是一个非常简单的解决方案。