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

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

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

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

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

有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top