2015-09-07 105 views
5

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

回答

2
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 
+0

Err和在哪里超时? –

+0

对不起,我没有读过暂停。我用一个计数器的睡眠API,如果达到10,然后退出该功能。希望这可以帮助你 – MadAntrax

+0

谢谢@MadAntrax,我有点新VB6 :)因此,睡眠是由kernel32.dll提供的命令? –

0

我没有VB6 ENV从我刚才......但不管......我做了一些调整你的原代码。在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 
+0

把时间延迟改为10,把FSO Check放在里面。如果找到文件,请跳出while循环,如果文件更早显示,则整个10秒钟不会过去。将一个DoEvents语句添加到IF的虚假端,以便在运行时不会占用CPU。 g'luck。 –