У нас есть форма, которая содержит элемент управления WebBrowser. Это единственный элемент управления в форме.
Мы передаем форму пути к файлу временного файла PDF, и он делает:
WebBrowser1.Navigate(Me._PathToPdf)
Когда форма закрывается, она отклоняется от файла PDF:
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
После закрытия формы вызывающий класс удаляет временный файл PDF.
Этот процесс прекрасно работал ... пока мы не установили Internet Explorer 8. По какой-то причине комбинация IE8 и Adobe Acrobat 8 (или 9) приводит к тому, что дополнительный временный дескриптор блокировки файла помещается во временный файл PDF. Дополнительная ручка блокировки не исчезнет, пока не закроется все приложение. Я должен также упомянуть, что нет никаких блокировок файла, пока файл не будет открыт Acrobat.
Мы можем воспроизвести это на нескольких машинах, и это всегда сочетание IE8 и Adobe Acrobat Reader. Мы можем установить Foxit Reader 3 вместо Adobe Acrobat, и все будет хорошо. Аналогично, мы можем запустить приложение на компьютере с IE7 и Adobe Acrobat, и все работает отлично. Но когда вы смешиваете волшебное зелье IE 8 и Acrobat, вы получаете беспорядок.
Может кто-нибудь сказать мне, почему я получаю дополнительную блокировку файла, которая сохраняется до конца приложения?
Спасибо.
Пример приложения, демонстрирующего мою проблему, можно найти здесь: PDFLockProblemDemo.zip