Я создаю файл, используя командную строку PDFCreator
, используя Process
и start()
. Я жду какое-то время, используя WaitForExit()
, иначе я Kill
использую процесс и снова использую WaitForExit()
.
После этих шагов иногда создается выходной файл, а иногда нет. Поэтому я проверяю, есть ли File.Exist()
, и получаю доступ к выходному файлу.
Проблема, с которой я столкнулся, заключается в том, что, хотя процесс, создающий файл, либо убит, либо возвращен, иногда этот файл используется другим Process
(вероятно, каким-то другим процессом, созданным PDFCreator
или Spooler
, я не уверен)
Итак, я Wait()
в течение 3
секунд и снова poll
в течение x
количества попыток, а затем выбрасываю исключение в случае сбоя.
Мне нужно переместить созданные файлы, и мне нужно проверить, что если файл существует, то подождать, пока другой процесс, использующий его, не освободит его или (возможно, найти, какой процесс его использует, и убить его?). Если файл не выходит, я могу просто продолжить работу в случае сбоя.
Как это сделать?
Я, вероятно, могу попытаться переместиться, тогда, если его использует исключение для другого процесса, я могу poll
и wait
.
Но какой чистый подход? Я не уверен, почему файл используется даже после того, как Process
был убит или возвращен.