Mamy formularz, który obsługuje kontrolkę WebBrowser. To jest jedyna kontrola w formularzu.Hosting IE 8 W WinForm i otwieranie pliku PDF
Mijamy formie ścieżkę do pliku tymczasowego pliku PDF i robi:
WebBrowser1.Navigate(Me._PathToPdf)
Gdy forma jest zamknięcie, to opuści pliku PDF:
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
Po Formularz jest zamknięty, klasa wywołująca kasuje tymczasowy plik PDF.
Ten proces działa świetnie ... dopóki nie zainstalowaliśmy przeglądarki Internet Explorer 8. Z jakiegoś powodu połączenie IE8 i Adobe Acrobat 8 (lub 9) powoduje umieszczenie dodatkowego uchwytu blokady pliku w tymczasowym pliku PDF. Dodatkowy uchwyt blokady nie znika, dopóki cała aplikacja nie zostanie zamknięta. Powinienem również wspomnieć, że nie ma żadnych blokad pliku, dopóki plik nie zostanie otwarty przez Acrobat.
Możemy powielać to na wielu komputerach i zawsze jest to połączenie IE8 i Adobe Acrobat Reader. Możemy zainstalować Foxit Reader 3 zamiast Adobe Acrobata i wszystko działa dobrze. Podobnie, możemy uruchomić aplikację na komputerze z IE7 i Adobe Acrobatem, i wszystko działa dobrze. Ale kiedy miksujesz magiczną miksturę IE 8 i Acrobata, kończy się bałagan.
Czy ktoś może mi powiedzieć, dlaczego otrzymuję dodatkową blokadę pliku, która trwa do końca aplikacji?
Dzięki.
Aplikacja przykład, który pokazuje mój problem można znaleźć tutaj: PDFLockProblemDemo.zip
W porządku, nie mogliśmy znaleźć żadnych dobrych rozwiązań tego problemu, więc uciekliśmy się do używania formantu ActiveX Acrobat Reader w formularzu. To niestety przywiązało nas do wersji Acrobat Reader, ale konieczne było wydanie wersji na zewnątrz. Zamykam pytanie. –