等待超时创建文件

Wait for a file to be created with a timeout

我正在尝试制作一个 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 秒)。我不想延长等待时间,因为这将是 运行 一千次。

您可以使用 Sleep 1000 毫秒,这意味着它将等待 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

我现在没有收到 VB6 环境...但无论如何...我对您的原始代码做了一些调整。如果无法使用 API 方法,您可以试试这个:

startTime = Time

endTime = TimeValue(startTime) + TimeValue(TimeSerial(0,0,10))

While endTime > Time 

If FSO.FileExists(sPdfFileName) Then
    OkCreatedPDF = True
    Exit While
Else
    OkCreatedPDF = False
    DoEvents()
End If

Wend