У меня есть FileSystemWatcher, отслеживающий каталог, который получает файлы TIF от сканирующего устройства.
Необходимо проверить, завершен ли процесс сканирования, а затем обработать полностью отсканированный файл, иначе моя программа будет обрабатыватьнеполный файл.
У меня есть что-то вроде:
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, но не знаю, решит ли он мою проблему