WinXP,VB6 Sp6でプログラムを作っています。
質問ですが、大きいデータをファイルに書き出す場合、ファイルを書いている間
制御がプログラムに戻ってこないため、ファイルを書き出し終えるまで何の処理
もできずに待っていなければなりません。
VBでファイルを書き出しながら別の処理をするにはどのようにすればいいのでしょうか?
よろしくお願いします。
案1) ファイルを吐いてから、別の処理を行うのではなく、
ファイル作成と別処理とが、少しずつ交互に行われるようにする。
案2) ファイルを作成する部分だけを別のexeにして、
それをShell関数で起動させる。
案3) VBのCD-ROM内の Coffee2.vbp プロジェクトのように、
非同期監視するようなActiveXコンポーネントにして実行させる。
魔界の仮面弁士さん回答ありがとうございます。
ファイルの作成は大きなファイルのコピーで、その進行状況を表示し
その途中でキャンセルが出来るようにしたかったのです。
案1で実現しようと思いますが、数KBずつ読んでは書くという処理を
考えています。
この間でキャンセルなどのボタンクリックを検出するにはどうすれば
いいのでしょうか?
Dim bytDat() As Byte
Dim intFS As Integer
Dim intFD As Integer
Dim lngSizeS As Long
Dim lngPt As Long
Dim BufferSize As Long
BufferSize = 64& * 1024&
intFS = FreeFile
Open SrcFile For Binary As #intFS
intFD = FreeFile
Open DstFile For Binary As #intFD
lngSizeS = LOF(intFS)
ReDim bytDat(BufferSize - 1)
lngPt = 0
Do While lngPt < lngSizeS
If lngPt + BufferSize > lngSizeS Then
ReDim bytDat(lngSizeS - lngPt)
End If
Get #intFS, , bytDat
Put #intFD, , bytDat
lngPt = lngPt + BufferSize
Loop
Close #intFS
Close #intFD