编写相互更新的 Windows 服务的正确方法是什么?
-
05-10-2019 - |
题
我有两个 Windows 服务,我们称之为 X 和 Y。X 处理我的应用程序的一般功能,Y 的存在是为了使 X 保持最新状态。它通过检查 X 的更新来做到这一点。如果它们存在,它会下载它们,关闭 X,复制新文件,然后重新启动 X。
然而,我希望 Y 为 X 做同样的事情。但我担心的是,每个服务都有可能互相关闭,这意味着它们永远不会重新启动。
我可以想到三种解决方案:
- 维护第三个服务 Z,它 从不更新,只检查 如果每个服务都已关闭 超过一分钟,如果是这样, 重新启动它们。这不会是 无论如何,这是一件坏事,但它 似乎是我想要的东西 为了能够更新,这 引入原始问题, 再。
- 在注册表中维护锁, 使 X 检查 Y 是否已更新 在进行更新之前,以及 反之亦然。
- 让每个服务在其 OnStop 方法中启动其他服务。不过,这似乎有点骇人听闻。
这个问题的正确解决方案是什么?
解决方案
我最终使用了 System.Threading.Mutex。这两个服务将始终在同一台计算机上运行,因此这是一个超级简单的解决方案。
不隶属于 StackOverflow