当前位置:编程学习 > VB >>

关于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


引用 6 楼 minghao5222 的回复:
我的程序,有N多个单独的任务,但是这些任务还不能同时进行,我就想通过Timer控件来控制他们,相当与异步执行
--------------------编程问答-------------------- http://baike.baidu.com/view/327466.htm?fr=ala0_1_1 --------------------编程问答-------------------- DOEVENT 不行那,首先我使用的是ACITIVEX 实现的,在他里面不能使用DOEVENTS ,并且使用DOEVENTS 后,转交控制权,影响了其他任务运行了 --------------------编程问答-------------------- 如果按上边的代码,那就更麻烦了,我有上千个任务,肯定不行的 --------------------编程问答-------------------- 上千个任务?做病毒还是木马啊?

引用 11 楼 minghao5222 的回复:
如果按上边的代码,那就更麻烦了,我有上千个任务,肯定不行的
--------------------编程问答-------------------- 晕那,难道病毒木马才用多线程那 --------------------编程问答-------------------- 用数百个Timer控件在一个程序中来完成上千个任务,LZ太N了.
--------------------编程问答-------------------- 牛人啊~~!! --------------------编程问答-------------------- 这。。。。。。。。。
--------------------编程问答-------------------- 顶一个,学习了
--------------------编程问答-------------------- 楼主你得改变一下你的思路。用几百个timer很不合理。
你应该把你想做的,重新理一下。 --------------------编程问答-------------------- 除非用多线程了,别的没什么好办法 --------------------编程问答-------------------- 是要让几百个Timer是同时开始运行吗? --------------------编程问答-------------------- 恩,用计数器的方法不错 --------------------编程问答-------------------- 不是那,相当于异步执行把 --------------------编程问答--------------------
引用 22 楼 minghao5222 的回复:
不是那,相当于异步执行把

怎么个异步运行法? --------------------编程问答-------------------- 你有几个进程,再多的定时器也不可能并发执行代码,怎么能起到异步执行的效果呢? --------------------编程问答-------------------- 某一时刻当前程序的某个事件若正在被cpu执行,此时如果一个定时器的定时时间到,但cpu没有时间去响应它,则应用程序就会扔掉这个定时器的本次触发事件,结果就是少执行了一次 --------------------编程问答-------------------- 您是想让Timer控件不要跳过任何事件(即使已经超时了),对不对? --------------------编程问答-------------------- 这么多Timer是不是都调用相同的函数呢? --------------------编程问答-------------------- 没有用过这么多TIME的 --------------------编程问答-------------------- 几百个TIMER...不知道楼主到底是做什么类型的程序.  --------------------编程问答-------------------- 顶顶....... --------------------编程问答-------------------- 几百个timer,你的设计就有问题 --------------------编程问答--------------------
引用 8 楼 getemail 的回复:
用一个计数器啊


VB code
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 Cas……

正解!
不然即使用C++,几百个线程也白搭! --------------------编程问答-------------------- --------------------编程问答-------------------- 楼主你的意图和思路没有表达清楚,别人没有办法进一步帮你

TIMER用来做简单计时是可以的,大量使用或很复杂的程序用来计时是不可取的(不准,你可以用秒表来对),并且你用几百个TIMER,这没有办法控制,也很难调试

建议换个思路 --------------------编程问答-------------------- 楼主明显跟电脑过不去,你想玩死电脑
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,