【问题标题】:What's the proper way to write Windows services that update each other?编写相互更新的 Windows 服务的正确方法是什么?
【发布时间】:2010-06-09 00:03:29
【问题描述】:

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

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

我能想到三个解决方案:

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

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

【问题讨论】:

    标签: windows-services updates


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2010-11-22
      • 2017-04-20
      • 1970-01-01
      相关资源
      最近更新 更多