1

我有两个 Windows 服务,我们将调用 X 和 Y。X 处理我的应用程序的一般功能,而 Y 的存在是为了使 X 保持最新。它通过检查 X 的更新来做到这一点。如果它们存在,它会下载它们,关闭 X,复制新文件,然后重新启动 X。

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

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

  1. 维护第三个服务 Z,它永远不会更新,它只检查每个服务是否已关闭超过一分钟,如果是,则重新启动它们。无论如何,这并不是一件坏事,但它似乎是我希望能够更新的东西,它再次引入了原始问题。
  2. 在注册表中维护一个锁,这样 X 在更新之前检查 Y 是否更新,反之亦然。
  3. 让每个服务在其 OnStop 方法中启动其他服务。不过,这似乎有点骇人听闻。

这个问题的正确解决方案是什么?

4

1 回答 1

1

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

于 2010-06-08T16:03:29.183 回答