【问题标题】:Windows Task Scheduler will run app only onceWindows 任务计划程序将只运行一次应用程序
【发布时间】:2010-09-27 18:02:38
【问题描述】:

所以我的情况是我在 Windows 任务计划程序上运行一个应用程序。这个应用程序每天下午 1 点运行一次。该应用程序执行一些查询并将数据传输到 FTP 站点。除了周末我不在这里运行应用程序并且仍然显示 GUI 供我查看之外,所有这些都工作得很好。这似乎使它停止在调度程序上运行,直到我关闭应用程序。所以周六它会运行,当我周一回来时,该应用程序将继续显示供我查看。但是在星期天,当调度程序尝试再次运行它时,它将失败,因为应用程序尚未关闭。

首先让我确认一下任务计划程序应该如何工作。其次,我有哪些替代方案可以安排每天运行并保持 GUI 显示以便我查看。该应用程序可以运行多次,因为每个会话不会干扰其他会话。因此,如果我去度假一周,我希望当我回来时,应用程序的 7 个实例已经运行并正在等待我的审查。

谢谢 AGP

【问题讨论】:

    标签: windows service task scheduler


    【解决方案1】:

    最好的办法是消除 UI 并将消息记录到事件日志或日志文件中。如果您愿意,可以从 CLI 作为一个单独的进程生成 UI,但它应该作为它自己的非子进程来完成。

    或者,您可以运行批处理文件而不是直接运行该进程。在批处理文件中,调用“START path_to_exe”而不是 EXE。这将导致批处理文件立即“完成”,并且 exe 在自己的进程中运行。这不是一个好的长期解决方案,但可以为您的当前问题提供临时解决方案。

    【讨论】:

    • 与此同时,我必须手动查看数据集,所以我暂时不能只写入日志文件。但是你给了我一些好主意。我还查看了第三方调度程序,但如前所述,这些都是临时解决方案。您的见解得到了适当的注意。
    【解决方案2】:

    这是计划任务系统的默认行为,因为在应用程序实际退出之前它不知道作业是否完成。因此,如果您的应用程序在 24 小时后仍处于打开状态,则将直接跳过下一次运行,因为就调度程序而言,当前运行“仍在进行”。

    就个人而言,我会重新审视您处理工作流程的方式,因为您正在设置一个难以长期管理的场景。

    【讨论】:

    • 毫无疑问,我将重新访问该过程。我首先手动运行它一周并查看结果。一旦我对这个过程感到满意,我就把它放在调度程序上,但我仍然想至少检查错误,直到我确信它可以自动运行而没有错误。
    【解决方案3】:

    我建议写入日志文件,而不是显示任何输出和/或错误的 UI。这样,应用程序可以写入,然后退出,您可以在方便时查看日志。这是一种非常常见的自动化流程解决方案。

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      相关资源
      最近更新 更多