我正在尝试制作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

09-09 20:11