讨论/请教:Timer的执行效率
我正在做个程序
要定时执行一大堆代码
间隔时间是1秒
由于Timer里要执行的代码比较多
现在我担心1秒的时间不够Timer去处理完这些代码
1秒内可以执行的代码量大概可以有多少呢?
问题点数:100、回复次数:11Top
1 楼lurel(城市陌生人)回复于 2006-03-13 17:35:21 得分 20
应该和代码量无关,应该和你的执行效率有关系,例如数据库更新什么的.
这种方法最好做一个线程来控制,然后同步,判断线程是否执行完毕,如果没有,然后等待.
如果不想用线程,可以做一个全局变量来判断是否这段代码执行完毕.Top
2 楼cczlp(不惑)回复于 2006-03-14 08:27:08 得分 10
代码超过一秒也没关系, 反正会执行完.Top
3 楼G66606495(键疯)回复于 2006-03-14 09:34:16 得分 5
一秒能执行多少到不知道,但你可计算一下执行你那段代码要多少时间
unsigned long lfrttime = GetTickCount();
// 你的代码
unsigned long ltime = GetTickCount()-lfrttime; // 代码执行时间(单位:毫秒)
Top
4 楼rainfall19831109(恩恩)回复于 2006-03-14 13:10:05 得分 0
To :
cczlp(不惑)
你说即使超过1秒,也会执行完。。。
那如果出现冲突呢?
就是说
第1次执行的那段还没释放资源
第2次的又需要那段资源,那不是出错了吗?Top
5 楼scsjs(闪电回归)回复于 2006-03-14 13:17:56 得分 5
如果那样的话,界面会卡死的说。Top
6 楼psc88()回复于 2006-03-14 14:32:36 得分 5
还是用线程控制比较好!Top
7 楼online30()回复于 2006-03-14 15:14:27 得分 15
第一次没有执行完,第二次会从上次没有执行完的地方继续执行,不会出现你说的没有释放资源的现象的.Top
8 楼netsys2(来电!)回复于 2006-03-14 15:18:44 得分 15
Timer是个消息队列,它会一直等到你处理完才执行下一次Timer。Top
9 楼ThinkX(秋天的树)回复于 2006-03-14 16:25:28 得分 15
TTimer是个消息队列啊,只有执行完这次才会执行下次。而且执行的线程就是创建Timer的线程,而winmm的timeSetEvent则是要执行的和创建Timer的是不同的线程,但是所有要执行的却又是在同一个线程里。Top
10 楼jone7319(舍我其谁)回复于 2006-03-14 16:48:38 得分 10
应该与代码的执行时间无法,我有一个项目跟你差不多,每隔2秒钟就扫描局域网一次,监视所有机器状态,这往往较费时间,但也没有问题,应该行得通。Top
11 楼rainfall19831109(恩恩)回复于 2006-03-14 17:34:24 得分 0
大概有个了解了。。。
结帖。。。
谢谢大家。。。Top




