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ファイルを削除します。
このプロセスはうまく機能します...InternetExplorer 8をインストールするまでは、何らかの理由で、IE8とAdobe Acrobat 8(または9)の組み合わせにより、一時PDFファイルに追加のファイルロックハンドルが配置されます。余分なロックハンドルは、アプリケーション全体がシャットダウンされるまで消えません。また、Acrobatでファイルを開くまで、ファイルにロックはありません。
これは複数のマシンで再現でき、常にIE8とAdobeAcrobatReaderの組み合わせです。AdobeAcrobatの代わりにFoxitReader3をインストールでき、問題なく動作します。同様に、IE7とAdobe Acrobatを搭載したマシンでアプリを実行でき、問題なく動作します。しかし、IE 8とAcrobatの魔法のポーションを混ぜると、混乱してしまいます。
アプリケーションが終了するまで持続する余分なファイルロックが発生する理由を誰かに教えてもらえますか?
ありがとう。
私の問題を示すサンプルアプリケーションはここにあります:PDFLockProblemDemo.zip