2015-09-07 21 views
5

zaman aşımıyla oluşturulmasını bekleyin Bir pdf dosyasının oluşturulmasını beklemek için bir vb6 prog yapmaya çalışıyorum. Şu anda sadece böyle 3 saniyelik bir duraklama yapıyorum:Bir dosyanın

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 

ama bazı zamanlar pdf oluşturma daha o 3 sn sürer. Bu yüzden dosyanın oluşturulmasını beklemek istiyorum ama bir zaman aşımıyla (10sn diyor). Bekleme süresini uzatmamayı tercih ediyorum, çünkü bu bin kez çalıştırılacak.

cevap

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 ve zaman aşımı nerede ??? –

+0

Üzgünüm, zaman aşımını okumadım. Uyku API'sini bir sayaçla kullandım, eğer 10'a ulaşırsa fonksiyondan çıkar. Umarım bu yardımcı olabilir – MadAntrax

+0

Teşekkür ederim @MadAntrax, ben eski VB6 için biraz yeni :) Yani uyku kernel32.dll tarafından sağlanan bir komuttur? –

0

Ben şimdi beni dan VB6 env yok ... ama ne olursa olsun ... Ben orijinal kod birkaç ince ayar yaptı. API yaklaşımının kullanılmaması durumunda, bunu deneyebilirsiniz:

+0

Zaman gecikmesini 10 olarak değiştirdikten sonra, FSO Check'i süre içine alın. Dosya bulunduğunda, while döngüsünden kurtulun, böylece dosya daha erken ortaya çıkarsa, 10 saniyenin tamamı geçmez. Çalışırken CPU'yu silmemeniz için IF'nin yanlış tarafına bir DoEvents ifadesi ekleyin. g'luck. –

İlgili konular