2010-07-01 1 views
3

Моя программа записывает временные файлы PDF (с использованием Path.GetTempFileName), которые затем передаются по умолчанию для PDF-обработчика (обычно Adobe Reader) для отображения. У меня есть блок finally в моем основном методе, чтобы удалить временные файлы, но если Adobe Reader все еще открыт, когда моя программа закрывается, файлы остаются открытыми и не могут быть удалены.Как удалить временные файлы, которые все еще открыты в других программах?

Одним из решений было бы просто оставить их там и предположить, что пользователь однажды уберет свою временную папку; файлы имеют всего 1,5 МБ каждый. Но есть ли лучший способ?

Я подумал, что однажды прочитал о способе регистрации файлов, которые будут удалены при следующей перезагрузке, аналогично тем, какие установщики и Windows Update делают, но я не могу найти информацию об этом сейчас. Есть ли функция, которую я могу использовать здесь?

+0

Можете ли вы передать файл на stdin в PDF-ридер? –

ответ

2

См. Статью в KB How To Move Files That Are Currently in Use. Как указано там, вам понадобится использовать другой метод для NT (который включает 2000, XP, Vista и Windows 7) и для устаревших версий ОС, если ваше приложение все еще работает на них.

Pinvoke.net управляет определениями вызовов и констант API Win32.

0

Можете ли вы зарегистрировать или сохранить открытые файлы, а затем при следующем запуске приложения попробуйте удалить временные файлы PDF? Поэтому сделайте так, чтобы ваше приложение в следующий раз позаботилось о порядке. Пользователь должен к тому времени закрыть его.

Смежные вопросы