2015-09-07 22 views
5

pdfファイルの作成を待つためにvb6 progを作成しようとしています。 は今、私はちょうどそのよう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

エラーとはどこですか? –

+0

申し訳ありませんが、私はタイムアウトを読んでいませんでした。私はカウンターでスリープAPIを使いました.10に達すると関数を終了しました。これはあなたに役立つことを願っています – MadAntrax

+0

ありがとう@MadAntrax、私は古いVB6に少し新しいです:)したがってsleepは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チェックを中に入れました。ファイルが見つかった場合は、whileループから抜けて、ファイルが早く表示された場合には10秒間経過しないでください。 DoEventsステートメントをIFの偽の側に追加して、これが実行されている間にCPUを悩まさないようにします。 g'luck。 –

関連する問題