关于Timer控件的问题
我在程序中,使用了TImer数组,大概 几百个,我运行的时候发现一个问题!比如我设置为 6000 的延时,然后运行Timer事件里面的代码!大多事都是可以运行的!但是总有几个个不一定是那几个,不能按预定的时间触发事件,有时是 12000秒触发一次,有些干脆需要更久的时间才触发!但是我都设置的是 6000 的延时啊!不知道那位高手可以解答一下,或者应该怎么解决这个问题那! --------------------编程问答-------------------- 你的代码是什么?你是如何知道有些没有按预定的时间触发事件? --------------------编程问答-------------------- TImer很占CPU得,你用几百个,行啊你 --------------------编程问答-------------------- 那有什么好的办法可以解决,或者不用Timer控件吗 --------------------编程问答-------------------- 我调试的时候发现的 --------------------编程问答-------------------- 做什么工作? --------------------编程问答-------------------- 我的程序,有N多个单独的任务,但是这些任务还不能同时进行,我就想通过Timer控件来控制他们,相当与异步执行 --------------------编程问答-------------------- 本想用多线程,但是VB下的多线程很不稳定,并且我的任务比较多,大概上千个 所以用Timer实现 --------------------编程问答-------------------- 用一个计数器啊Dim n As Integer
Dim m As Integer
Private Sub Form_Load()
n = 0
m = 200
End Sub
Private Sub Timer1_Timer()
n = n + 1
If n > m Then n = 0
Select Case n
Case 0
'做第1件事情
Case 1
'做第2件事情
Case 2
'做第3件事情
End Select
End Sub
--------------------编程问答-------------------- http://baike.baidu.com/view/327466.htm?fr=ala0_1_1 --------------------编程问答-------------------- DOEVENT 不行那,首先我使用的是ACITIVEX 实现的,在他里面不能使用DOEVENTS ,并且使用DOEVENTS 后,转交控制权,影响了其他任务运行了 --------------------编程问答-------------------- 如果按上边的代码,那就更麻烦了,我有上千个任务,肯定不行的 --------------------编程问答-------------------- 上千个任务?做病毒还是木马啊?
--------------------编程问答-------------------- 晕那,难道病毒木马才用多线程那 --------------------编程问答-------------------- 用数百个Timer控件在一个程序中来完成上千个任务,LZ太N了.
--------------------编程问答-------------------- 牛人啊~~!! --------------------编程问答-------------------- 这。。。。。。。。。
--------------------编程问答-------------------- 顶一个,学习了
--------------------编程问答-------------------- 楼主你得改变一下你的思路。用几百个timer很不合理。
你应该把你想做的,重新理一下。 --------------------编程问答-------------------- 除非用多线程了,别的没什么好办法 --------------------编程问答-------------------- 是要让几百个Timer是同时开始运行吗? --------------------编程问答-------------------- 恩,用计数器的方法不错 --------------------编程问答-------------------- 不是那,相当于异步执行把 --------------------编程问答--------------------
怎么个异步运行法? --------------------编程问答-------------------- 你有几个进程,再多的定时器也不可能并发执行代码,怎么能起到异步执行的效果呢? --------------------编程问答-------------------- 某一时刻当前程序的某个事件若正在被cpu执行,此时如果一个定时器的定时时间到,但cpu没有时间去响应它,则应用程序就会扔掉这个定时器的本次触发事件,结果就是少执行了一次 --------------------编程问答-------------------- 您是想让Timer控件不要跳过任何事件(即使已经超时了),对不对? --------------------编程问答-------------------- 这么多Timer是不是都调用相同的函数呢? --------------------编程问答-------------------- 没有用过这么多TIME的 --------------------编程问答-------------------- 几百个TIMER...不知道楼主到底是做什么类型的程序. --------------------编程问答-------------------- 顶顶....... --------------------编程问答-------------------- 几百个timer,你的设计就有问题 --------------------编程问答--------------------
正解!
不然即使用C++,几百个线程也白搭! --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主你的意图和思路没有表达清楚,别人没有办法进一步帮你
TIMER用来做简单计时是可以的,大量使用或很复杂的程序用来计时是不可取的(不准,你可以用秒表来对),并且你用几百个TIMER,这没有办法控制,也很难调试
建议换个思路 --------------------编程问答-------------------- 楼主明显跟电脑过不去,你想玩死电脑
补充:VB , 控件