Tenemos un formulario que aloja el control WebBrowser. Ese es el único control en el formulario.Alojamiento de IE 8 en WinForms y apertura de PDF
Pasamos la forma de la ruta de archivo de un archivo PDF temporal y que hace:
WebBrowser1.Navigate(Me._PathToPdf)
Cuando el formulario se está cerrando, se desplaza fuera del archivo PDF:
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
Una vez que el el formulario está cerrado, la clase llamante luego borra el archivo PDF temporal.
Este proceso funciona de maravilla ... hasta que instalamos Internet Explorer 8. Por alguna razón, la combinación de IE8 y Adobe Acrobat 8 (o 9) hace que un asa adicional de bloqueo de archivo se coloque en el archivo PDF temporal. El asa de bloqueo adicional no desaparece hasta que toda la aplicación se apaga. También debo mencionar que no hay bloqueos en el archivo hasta que Acrobat abra el archivo.
Podemos reproducir esto en varias máquinas y siempre es la combinación de IE8 y Adobe Acrobat Reader. Podemos instalar Foxit Reader 3 en lugar de Adobe Acrobat y todo funciona bien. Del mismo modo, podemos ejecutar la aplicación en una máquina con IE7 y Adobe Acrobat, y las cosas funcionan bien. Pero, cuando mezclas la poción mágica de IE 8 y Acrobat, terminas con un desastre.
¿Alguien puede decirme por qué me sale un bloqueo de archivo adicional que persiste hasta el final de la aplicación?
Gracias.
Un ejemplo de aplicación que demuestra mi problema se puede encontrar aquí: PDFLockProblemDemo.zip
Muy bien, no pudimos encontrar ninguna buena solución a este problema, por lo que hemos recurrido al uso del control ActiveX Acrobat Reader en un formulario. Desafortunadamente, esto nos ha vinculado a una versión de Acrobat Reader, pero era necesario sacar la versión por la puerta. Estoy cerrando la pregunta. –