读书人

动态TIMER,动态数组.延时等操作出错。

发布时间: 2012-02-21 16:26:23 作者: rapoo

动态TIMER,动态数组.延时等操作出错。
RT。
我这里用程序生成出TIMER

用INDEX区分每个的事件。
用了

Public Sub SleepitB(ByVal lngMillisecond As Long, UserId)
Dim lngStartTime As Long, lngProcTime As Long
Dim wMsg As Msg
lngStartTime = timeGetTime()
Randomize
lngMillisecond = Int(lngMillisecond) + Int(Rnd * 150)
Do
GetMessage wMsg, 0&, 0, 0
TranslateMessage wMsg
DispatchMessage wMsg
lngProcTime = timeGetTime - lngStartTime

Loop While lngProcTime < lngMillisecond
End Sub



做延时,所有TIMER都可以正常工作。互不干扰。

但是在TIMER的TIMER事件中调用了基它函数。里面如果有大量循环的话。所有TIMER都会停止。等待这个循环结事才会运行。



有什么办法。能让所有的TIMER无论调用。还是执行什么。都不干扰呢。。

我本想用多线程来做。但是 如果用多线程循环操作,就像TIMER这样。。而又不会假死?





[解决办法]
加doevents语句
[解决办法]
试一试用API计时行不行。
[解决办法]
第一个想到的就是DoEvents
[解决办法]
但是在TIMER的TIMER事件中调用了基它函数。里面如果有大量循环的话。所有TIMER都会停止。等待这个循环结事才会运行。

准确的说是在大循环中加入DoEvents,不知行否?
[解决办法]
这个不好办吧。

在 Timer() 事件中,无论多少 DoEvents 也不会达到 Timer()事件 重入的效果。


[解决办法]
在TimerA中只启动TimerB,在TimerB中执行耗时操作即可,但要注意TimerB别重入。

读书人网 >VB

热点推荐