【发布时间】:2010-06-09 00:03:29
【问题描述】:
我有两个 Windows 服务,我们将调用 X 和 Y。X 处理我的应用程序的一般功能,而 Y 的存在是为了使 X 保持最新。它通过检查 X 的更新来做到这一点。如果它们存在,它会下载它们,关闭 X,复制新文件,然后重新启动 X。
但是,我希望 Y 对 X 做同样的事情。不过,我担心的是每个服务都可能相互关闭,这意味着它们永远不会重新启动。
我能想到三个解决方案:
- 维护第三个服务,Z,它 永远不会更新,只检查 如果每个服务都已关闭 超过一分钟,如果是这样, 重新启动它们。这不会是一个 无论如何,有坏事,但它 好像是我想要的东西 能够更新,其中 引入原始问题, 再次。
- 在注册表中维护一个锁, 这样 X 检查 Y 是否已更新 在进行更新之前,并且 反之亦然。
- 让每个服务在其 OnStop 方法中启动其他服务。不过,这似乎有点骇人听闻。
这个问题的正确解决方案是什么?
【问题讨论】: