代码之家  ›  专栏  ›  技术社区  ›  Bigballs

如何在同一时间每天执行一次C服务中的代码?

  •  8
  • Bigballs  · 技术社区  · 16 年前

    所以我的问题是,我需要在一个服务器上运行一个c服务,这个服务器每天凌晨3点在ftp上获取一次文件。我想我可以用一个线程。睡觉()或比较日期时间。现在和3AM…

    你有更好的解决办法吗?

    非常感谢你的帮助!

    8 回复  |  直到 15 年前
        1
  •  36
  •   Community Mohan Dere    9 年前

    更好的解决方案,让windows为您使用 Scheduled Tasks .

    如果一天只需要处决一次,那我就接受这个。甚至谷歌也做到了;)

    编辑:

    要回答这个评论,它是 Fredrik 已经说过了。它是一个高级选项,您可以在任务设置时打开它,其中包含一个复选框,称为: Run only if logged on “,开头是错误的。

        2
  •  4
  •   Tomas Aschan    16 年前

    编写一个控制台应用程序或类似的应用程序,并使用windows调度程序(或它现在所称的任何程序)每天运行它。

        3
  •  3
  •   Vinay Sajip    16 年前

    对于灵活的解决方案,您可以使用 this . 它不是一个windows服务,但是您可以很容易地将它合并到一个服务中。或者你可以考虑 Quartz.NET 这被认为是工业实力(Java版本当然是)。

        4
  •  3
  •   pavium    16 年前

    我已经成功地将计划的任务用于备份,但我有一句话要提醒…

    如果注销,则不执行计划的任务。我不确定这是否可能是过度的,但我已经被任务没有执行,因为Windows自动更新,重新启动和坐等我登录。

    我禁用了自动更新-Windows应该先询问。

    另一个考虑因素是,凌晨3点是许多用户正常注销的时间。

        5
  •  2
  •   Artelius    16 年前

    其他的答案也不错。我只是想指出

    比较日期时间。现在是凌晨3点

    是一个糟糕的解决方案,即使您在每次检查之间睡眠一段时间,因为它会不必要地浪费系统资源(不仅在重复检查时间方面,而且在程序的内存使用方面)。

        6
  •  2
  •   Kyle Rosendo    16 年前

    如果你每天晚上都在等待一个文件,与其担心它什么时候到达,不如在它到达时触发一个事件。

    看:

    System.IO.FileSystemWatcher

    File System Watcher on MSDN

        7
  •  1
  •   Michael Meadows    16 年前

    为什么不将此设置为作为计划任务运行。执行后退出。设置Windows以在每天凌晨3:00将进程作为计划任务启动。

        8
  •  1
  •   Kyle Rosendo    15 年前

    System.Threading.Timer 可能对你有用。

    Documented here