因为帮朋友开发个小软件,
要求:
可定时开启/关闭指定程序,可定时关机,锁定等。
任务可能最大达到100多个。现在问题是:
如何用定时器检测多个任务:
是用单个定时器循环检测所有任务还是每个任务对应一个定时器?
还是用线程池?
如何确保精确度在1秒内?

解决方案 »

  1.   

    才100个“任务”的话,一个Timer就够了,把任务数据配置到文件(可以用INI),Timer每隔1秒就扫一遍配置文件,并按照配置的时间执行相应的任务。写一个INI示例:(为了不用写注释,就直接用中文了。)[全局]
    开机时间=00:00:00
    关机时间=00:00:00
    [任务1]
    命令行="c:\windows\notepad.exe" d:\YY小说.txt
    开启时间=00:00:00
    关闭时间=00:00:00
    [任务2]
    命令行="c:\windows\mspaint.exe" d:\MM图片.bmp
    开启时间=00:00:00
    关闭时间=00:00:00楼主自己再修改扩展吧,祝你好运!
      

  2.   

    要实时就不能用timer,
    用线程吧
      

  3.   

    1.用线程池,每XX个任务对应一个线程
    2.记录关闭程序的时间日志<如果一个任务已经关闭,下次扫描时就不用重复关闭了/启动程序也是一个道理,此外还有动作结果的日志>
    3.加INI文件,配置程序关闭与开启时间
    4.程序本身好写,最重要的就是测试,这种放在服务器上的东西,不小心就会有泄露
      

  4.   

    一个任务队列,一个定时器(不用timer),有新任务时,依据队列计算下一个定时点,重设时间值即可。
    每个任务执行后,重设下一个时间点。