我们有一个承载 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