如题 如题
控制台程序,每天时间到8点就自动执行一段程序
控制台程序,每天时间到8点就自动执行一段程序
解决方案 »
- c# 如何调用系统的邮件
- 为什么用AvtiveMQ以同步的方式发送消息,速度比较慢?
- DataGridView ----- DataGridViewButtonColumn
- vs 2008推出来后,大家说说vs2005还会有人用吗?.net 2.0还会有人用吗?
- c#,关于显示所有文件的程序的问题。
- 非常有意思的算法 各位帮帮忙啊 呵呵
- C# interface 类型指向其子类出现问题,求助
- VS 2009中数据表单向导模板哪去了?
- 关于程序自动运行的问题
- 难题:关于数据存取速度的问题,请各位高手指点呀,很急!----UP 即给分
- 再来向高手请教正则问题
- 自行开发的自动服务程序报错,请问怎么解决?
2. 如果不用windows计划,用timer,每一分钟判断一下当前时间,到了8点再执行
写个bat 到时间就自动打开程序允许?
如果用Windows计划是可以的。
还有就是程序运行时调用时间,算出当前时间距离8点的时间长度,设定下次调用间隔。
调用后再设定下次运行时间间隔24小时,就OK了。
当然,做成windows服务可以在后台运行了。
2、Timer(上面说的Service和进程都是一回事,还是这个原理)
实现的思想,就是判断一下,当前时间是否是可以执行程序的时候,如果不是,则根据定时的规则,判断出,下一个要执行这个程序的时间点是什么时候?
然后把这个时间点减去当前时间, 得到这个时间后,直接休眠这个时间,时间到了之后,执行,执行之后,再判断下一个时间点到当前时间,还需要多久,如此反复.有些人说,先休眠到4点,然后执行程序,完成之后再休眠24个小时,那如果这个程序,执行了一个小时,怎么办,那么,明天的执行时间就变成了5点了,
还有,Timer有一个特点就是,当时间到就开一个线程处理任务, 而不会停止计数器,这样的话,如果你的程序执行超过了24个小时,那么,今天的执行程序还没有执行,第二天的执行程序又被触发,这样同一个程序,就会有两个线程在执行,就可能需要考虑并发问题了,这点需要注意一下.我提供的那个定时器,去掉了,Timer的那个特性,当执行程序时,停止计数器计时,在程序执行完后之后,再计算到下次执行需要休眠的时间,这样就可以实现每次都精确时间点执行程序