WebBrowserコントロールをホストするフォームがあります。それがフォーム上の唯一のコントロールです。WinFormsでIE 8をホストしてPDFを開く
我々は、フォームに一時的なPDFファイルのファイルパスを渡し、それはありません:一度
WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")
Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
Application.DoEvents()
System.Threading.Thread.Sleep(50)
Loop
:
WebBrowser1.Navigate(Me._PathToPdf)
フォームが閉じている、それはPDFファイルから移動しますフォームが閉じられると、呼び出し側のクラスは一時的なPDFファイルを削除します。
Internet Explorer 8をインストールするまで、このプロセスはうまくいきます。何らかの理由で、IE8とAdobe Acrobat 8(または9)を組み合わせると、一時的なPDFファイルに余分なファイルロックハンドルが配置されます。余分なロックハンドルは、アプリケーション全体がシャットダウンされるまで消えません。私はまた、ファイルがAcrobatによって開かれるまでファイルにロックがないことを言及する必要があります。
これを複数のマシンで再現できます。常にIE8とAdobe Acrobat Readerの組み合わせです。 Adobe Acrobatの代わりにFoxit Reader 3をインストールしても問題ありません。同様に、私たちはIE7とAdobe Acrobatを搭載したマシン上でアプリケーションを実行することができ、問題なく動作します。しかし、IE 8の魔法の薬とAcrobatを混ぜると、混乱することになります。
私はなぜアプリケーションの最後までファイルのロックが継続しているのか教えていただけますか?
ありがとうございました。
私の問題を示す例アプリケーションは、ここで見つけることができます:
申し訳ありませんが、私たちはこの問題の解決策を見つけることができませんでしたので、フォーム上でActiveX Acrobat Readerコントロールを使用しました。残念なことに残念なことに、私たちはAcrobat Readerのバージョンに縛られていましたが、バージョンを入手する必要がありました。 私は質問を終了します。 –