【求思路】多个任务需要定时检测,怎么让开销最省?

时间:2022-02-16 21:48:51
因为帮朋友开发个小软件,
要求:
可定时开启/关闭指定程序,可定时关机,锁定等。
任务可能最大达到100多个。

现在 问题是:
如何用定时器检测多个任务:
是用单个定时器循环检测所有任务还是每个任务对应一个定时器?
还是用线程池?
如何确保精确度在1秒内?

11 个解决方案

#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


建议你用线程

#3


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

#4


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

#5


就写个线程,放个轮转时间,一个事件属性出来就行,

#6


直接使用 at 或 任务计划 不行吗?

#7


线程解决吧。

#8


支持线程。。再把写好的代码贴出来。。 【求思路】多个任务需要定时检测,怎么让开销最省?

#9


我要转行,不做程序了

#10


嗯,考虑用线程做了。

#11


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

#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


建议你用线程

#3


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

#4


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

#5


就写个线程,放个轮转时间,一个事件属性出来就行,

#6


直接使用 at 或 任务计划 不行吗?

#7


线程解决吧。

#8


支持线程。。再把写好的代码贴出来。。 【求思路】多个任务需要定时检测,怎么让开销最省?

#9


我要转行,不做程序了

#10


嗯,考虑用线程做了。

#11


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