スキャン デバイスから TIF ファイルを受け取るディレクトリを監視する FileSystemWatcher があります。
スキャン プロセスが完了したかどうかを確認してから、完全にスキャンされたファイルを処理する必要があります。そうしないと、プログラムが不完全なファイルを処理してしまいます。
私は次のようなものを持っています:
private void OnFileCreated(...)
{
while(IsFileLocked(path))
Thread.Sleep(time);
// OK to read
}
これが起こっていることです:
- Scanner creates the file
- FileSystemWatcher detects the file, but its in use
- Scanner reads the first page to the file
- Scanner releases the file
- My code leaves the while(IsFileLocked(path))
- My code reads the incomplete file (problem)
- Scanner adds more pages to the file
スキャナが 100 ページをスキャンしているとします。「読み取りOK」の場合、ファイルは不完全です (残り 99 ページ)。
そのため、ファイルが完全かどうかを知る必要があります。ファイルが変更されているかどうかを確認するためにしばらく待機することもありますが、スキャナーは同じ TIF のスキャンをアイドル状態にする可能性があるため、この時間は最大で数時間かかる場合があります。他の解決策は、ファイルが完全ではないことを示すTIFファイルのフラグをチェックすることです(これを探しましたが、何も見つかりませんでした)。
編集: ここで質問する前に、TIFF 形式のドキュメントを読みました。属性 PageNumber が興味深いと思いましたが、それで問題が解決するかどうかわかりません