none
.Net Framework中如实现计划任务 RRS feed

  • 问题

  • 如题,我写了一个Windows服务, 按照指定的时间备份一些文件。例如一些备份软件一样, 按照特定的时间来执行任务。
    如,设置该服务在每周星期一晚上8:00运行,或每月的每一天晚上8:00运行。
    请问如何才实现这样的功能???
    Gao Peter
    2009年10月22日 14:11

答案

  • 你好,可以使用定时器(System.Threading.Timer 类),可以在初始化定时器时指定执行间隔。
    另:该定时器是可重入的,即若设时间为一秒,而程序段时间执行大于一秒,那么在定时器间隔到后会再次调用程序段。 定时器是通过 线程池执行任务。
    具体请参阅MSDN,搜索 System.Threading.Timer

    因为太笨,所以努力!
    2009年10月23日 0:15
  • 你好,

    设置每周,或者每月多少点钟运行时,可以依据设置计算出下一次的运行时间,然后还可以设置误差时间。由于系统不是实时操作系统,差1秒就可能不执行了,现在很多软件由于定时器会因为其他任务的影响,不能准确的把握时间,都设置了一个误差时间。比如,每天中午12点需要执行,误差为一个小时。比如12点时候系统繁忙,这时候定时器可能没有执行,过了一会才执行。但是没有误差的话,任务就不执行了,时间已经过了。
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 1:38
    版主
  • 你好!
         可以参考这个实现:
         http://www.cnblogs.com/sky1024/articles/904262.html
         希望对你有帮助!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 5:24
    版主
  • 为公司做过这个东西

    通过搭建一个服务调用框架,将一个个应用程序模拟为一个个任务

    每个应用程序设定自己的任务计划,定时调度启动


    准备写出实现原理,有空关注博客

    http://home.cnblogs.com/sourfish/
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 8:21

全部回复

  • 你好,可以使用定时器(System.Threading.Timer 类),可以在初始化定时器时指定执行间隔。
    另:该定时器是可重入的,即若设时间为一秒,而程序段时间执行大于一秒,那么在定时器间隔到后会再次调用程序段。 定时器是通过 线程池执行任务。
    具体请参阅MSDN,搜索 System.Threading.Timer

    因为太笨,所以努力!
    2009年10月23日 0:15
  • 你好,

    设置每周,或者每月多少点钟运行时,可以依据设置计算出下一次的运行时间,然后还可以设置误差时间。由于系统不是实时操作系统,差1秒就可能不执行了,现在很多软件由于定时器会因为其他任务的影响,不能准确的把握时间,都设置了一个误差时间。比如,每天中午12点需要执行,误差为一个小时。比如12点时候系统繁忙,这时候定时器可能没有执行,过了一会才执行。但是没有误差的话,任务就不执行了,时间已经过了。
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 1:38
    版主
  • 你好!
         可以参考这个实现:
         http://www.cnblogs.com/sky1024/articles/904262.html
         希望对你有帮助!
    周雪峰
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 5:24
    版主
  • 为公司做过这个东西

    通过搭建一个服务调用框架,将一个个应用程序模拟为一个个任务

    每个应用程序设定自己的任务计划,定时调度启动


    准备写出实现原理,有空关注博客

    http://home.cnblogs.com/sourfish/
    • 已标记为答案 YiChun Chen 2009年10月26日 10:40
    2009年10月23日 8:21
  • 我在www.codeproject.com上找到的答案, 需要的朋友可以,在它的网站上搜索TaskScheduler关键字


    Gao Peter
    2009年10月27日 2:40