我正在尝试制作vb6编,以等待pdf文件的创建。
现在,我只是像这样暂停3秒:
startTime = Time
endTime = TimeValue(startTime) + TimeValue(TimeSerial(0,0,3))
While endTime > Time
Wend
If FSO.FileExists(sPdfFileName) Then
OkCreatedPDF = True
Else
OkCreatedPDF = False
End If
但有时创建pdf需要3秒钟以上。因此,我想等待文件创建但超时(例如10秒)。我不希望延长等待时间,因为它将运行一千次。
最佳答案
您可以在1000毫秒内使用Sleep
,这意味着它将等待1秒钟,直到它继续运行代码,使用名为sTimeout
的标志变量,您可以定义运行循环的秒数,我将其硬编码为10但是您可以设置另一个变量来设置秒数,每秒将运行循环并将sTimeout
增加一,一旦达到10,它将完成while
循环。
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Function GeneratePDF()
Dim sTimeout as Integer
Call YourPDFroutine()
StatusLabel.Caption = "Wait until PDF is finished..."
While FSO.FileExists(sPdfFileName) = False
sTimeout = sTimeout + 1
Sleep 1000
If sTimeOut > 10 Then
OkCreatedPDF = False
StatusLabel.Caption = "ERROR: Timeout!"
Exit Function
End If
Wend
OkCreatedPDF = True
StatusLabel.Caption = "The PDF " & sPdfFileName & " was generated!"
End Function