WaitForChanges ожидает создания события , как вы его закодировали. Когда документ создается, вы получаете уведомление: это не означает, что файл полностью записан, а блокировка снята.
К сожалению, я не знаю хорошего решения, кроме периодического опроса файла. Если бы было событие «все блокировки удалены», вы могли бы использовать это, но это не так.
Я только что проверил наш дамп PDF в код каталога, и мы используем только WaitForChanges, чтобы обнаружить начало нового файла. Затем мы используем try {} catch {}, где catch (не получая прав на файл) повторно отправляет попытку в очередь, которую мы обслуживаем: каждая попытка «откатывается» дольше, поэтому первая попытка составляет 1 секунду после того, как мы обнаружили файл, второй - через 2 секунды, затем 4, 8 и т. д. Это уменьшает число повторных попыток для больших файлов, в то же время оставаясь достаточно отзывчивым на более короткие файлы.