首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

动态TIMER,动态数组.延时等操作出错。该怎么解决

2012-02-21 
动态TIMER,动态数组.延时等操作出错。RT。我这里用程序生成出TIMER用INDEX区分每个的事件。用了Public Sub Sl

动态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别重入。

热点排行