【问题标题】:how to run a application with fault handling when windows startupWindows启动时如何运行具有故障处理功能的应用程序
【发布时间】:2010-12-09 08:47:00
【问题描述】:

全部。我有一个有线案例 我有两个控制台.net 应用程序。 假设 app1 和 app2。

我希望两个应用程序在 windows 服务器启动时运行(无需登录,我的两个应用程序将自动运行)

但是有一个规则,app1 必须至少比 app2 早 10 分钟运行。 他们中的任何一个都崩溃了,我希望他们可以自动再次升起

有谁知道我该怎么做???

【问题讨论】:

    标签: windows windows-services scheduled-tasks


    【解决方案1】:

    在我看来,唯一可接受的方式是让第三个服务充当看门狗,并在其他服务启动时触发。

    这必须由其他进程提供定期“心跳”服务,以防止它关闭和重新启动它所监视的服务。

    【讨论】:

      【解决方案2】:

      启动 app1 设置计时器。 10 分钟后启动 app2 并进入 app2_launched 状态。然后使用 pid 文件或 os 共享对象之类的东西来相互“监控”

      【讨论】:

        【解决方案3】:

        首先,如果您的应用必须在没有用户登录的情况下运行,它们必须是服务。

        现在,在创建服务时,您可以决定如何响应崩溃。您可以将服务配置为在崩溃时重新启动(请参阅服务属性对话框)。

        如果 App1 崩溃,是否必须停止 App2,启动 App1,然后在 10 分钟后重新启动 App2?或者这样的话,你可以直接重启App1吗?

        然而,根据您的描述,对启动顺序的控制似乎很复杂,内置服务配置是不够的,因此您很可能需要将该逻辑保留在某个地方。

        如果 App1 可以了解 App2,您可以在 App1 中拥有该逻辑。然后 App1 将有 2 个职责(运行自己,以及管理 App2 服务的状态)。

        另一方面,您可以拥有第三个服务,它只负责管理 App1 和 App2 服务的生命周期和运行状况。这是 ChrisBD 建议的看门狗。

        【讨论】:

          猜你喜欢
          • 2015-04-03
          • 1970-01-01
          • 2011-07-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多