1,453
社区成员
发帖
与我相关
我的任务
分享Option Explicit
Private Type TypeTask
ID As Long
IsWating As Boolean
OnTimer As Single
End Type
Private Const TASK_COUNT As Long = 2
Private m_Tasks(TASK_COUNT - 1) As TypeTask
Private Function TimerToString(ByVal f As Single) As String
Dim lSeconds As Long
Dim dt As Date
lSeconds = Fix(f)
dt = TimeSerial(0, lSeconds \ 60, lSeconds Mod 60)
TimerToString = Format$(dt, "hh:mm:ss") & _
Format$(f - lSeconds, ".00")
End Function
Private Sub Command1_Click(Index As Integer)
Dim fNow As Single
fNow = Timer()
With m_Tasks(Index)
Debug.Print TimerToString(fNow), "Start Timer " & .ID
.OnTimer = fNow + (Index + 1)
.IsWating = True
End With
End Sub
Private Sub Form_Load()
Dim i As Long
For i = 0 To TASK_COUNT - 1
m_Tasks(i).ID = i + 1
Next
Timer1.Interval = 50
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim fNow As Single
Dim i As Long
fNow = Timer()
For i = 0 To TASK_COUNT - 1
With m_Tasks(i)
If .IsWating Then
If fNow >= .OnTimer Then
Debug.Print TimerToString(fNow), "Finish Timer " & .ID
.IsWating = False
End If
End If
End With
Next
End SubOption Explicit
Private Sub Wait(ByVal MilliSeconds As Long)
Timer1.Interval = MilliSeconds
Timer1.Enabled = True
While Timer1.Enabled
DoEvents
Wend
End Sub
Public Sub a()
Debug.Print Now, "Start Timer 1"
Wait 2000
Debug.Print Now, "Finish Timer 1"
Debug.Print Now, "Start Timer 2"
Wait 4000
Debug.Print Now, "Finish Timer 2"
End Sub
Private Sub Command1_Click()
a
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
End Sub
dim t as single
t=timer
do
doevents
loop while timer-t <1