8

ReadDirectoryChangesWフォルダ内のファイルが追加または削除されたときに通知するために使用するスレッドがあります。

新しい画像ごとに、ファイルを開いて画像のサムネイルを作成します。ただし、ファイルが宛先フォルダーに完全にコピーされる前に通知を受け取ったように見えます。その場合、サムネイルの一部しか表示されません。(ファイルはリモートロケーションから中央サーバーにコピーされ、ネットワークはピーク時に遅くなる可能性があります。)

ファイルが使用されているかどうかを確認しますが、画像ファイルでは機能しないようです。

HFileRes := CreateFile(pchar(Filename), GENERIC_READ or GENERIC_WRITE, 0, nil,   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0) ;
Result := (HFileRes = INVALID_HANDLE_VALUE);
if (not Result) then
  CloseHandle(HFileRes) ;

私の質問はこれです:ファイルが完全にコピーされたことを検出する方法はありますか、それとも最後にチェックしたときからファイルサイズまたは最終変更時刻が変更されなくなるまで待つだけですか?

4

1 に答える 1

3

ファイル転送が終了したかどうかを確認するには、最初に排他的アクセスを取得できるかどうかを確認してください。

  FileHandle := FileOpen(FileName, fmOpenRead or fmShareExclusive);
  if FileHandle > 0 then
    {valid file handle}
于 2011-06-30T17:11:38.923 に答える