2015-09-07 44 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。 –