Vb6 等待创建具有超时的文件

Vb6 等待创建具有超时的文件,vb6,filesystems,timeout,wait,Vb6,Filesystems,Timeout,Wait,我正在尝试制作一个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 I

我正在尝试制作一个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毫秒,这意味着它将等待1秒,直到它继续运行代码,使用一个名为
sTimeout
的标志变量,您可以定义它将运行循环的秒数,我硬编码了10,但您可以为设置秒数设置另一个变量,它将每秒运行循环并将刺激增加1,一旦达到10,它将在循环期间完成

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

对不起,我没有读到超时。我使用带计数器的睡眠API,如果达到10,则退出该函数。希望这能帮助你谢谢@MadAntrax,我对旧的VB6有点陌生:)所以sleep是由kernel32.dll提供的命令?sleep是一个API,一个存储在Windows库(kernel32.dll)中的函数,你可以使用它。vb6没有在指令之间“等待”的本机函数,每次您需要执行非本机实现的操作时,您可以使用API调用来实现itOK不确定我是否可以在我的情况下调用此API(vbcode将在我无法修改的应用程序中运行)会让您知道。谢谢,将时间延迟改为10,将FSO检查放在中间。如果找到文件,打破while循环,这样如果文件显示得更快,整个10秒钟就不必过去了。在IF的错误端添加DoEvents语句,这样在运行时就不会占用CPU。祝你好运。