當前位置:編程學習大全網 - 編程軟體 - VB中Timer和Doevents的問題!

VB中Timer和Doevents的問題!

Sleep是掛起式等待,對於小於壹個時鐘周期(壹般是16ms)的等待可能是系統通過循環實現的,所以CPU使用率必然很高,另外,妳sleep 1的話操作系統無法精確做到1m,所以妳的代碼Sleep 1實際要等上若幹毫秒以後才有反應(因為1ms小於windows的壹個調度周期)

解決辦法是用SetTimer的這個API

在窗體裏添加壹個按鈕,添加代碼:

Private Sub Command1_Click()

TimerId = SetTimer(0, 0, 1000, AddressOf TimerProc)

End Sub

添加壹個模塊,添加代碼

Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Public TimerId As Long

Public Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)

KillTimer 0, TimerId

Form1.Print "時間到"

End Sub

需要註意的是用戶層的任何定時器設定值小於15ms時都將是不精確的

  • 上一篇:求短篇小說素材
  • 下一篇:Noip2004重新匹配問題
  • copyright 2024編程學習大全網