此问题会影响我的VB.NET和C#Winform
应用程序。关闭包含Form
conreol的Adobe PDF Viewer
时,Form
需要大约10秒才能关闭。我将问题跟踪到Dispose
方法。通常情况下,在C#中,所有通过向Adobe PDF Control
事件处理程序添加行来从FormClosing
偷取焦点,但在VB.NET中,即使我窃取焦点,它仍然需要花费太长时间Form
1}}关闭。我试图通过处理包含Form
来明确地处理控件和隐式。我在LoadFile()
方法中尝试了空字符串。我尝试了新的interop库的新参考。什么都行不通。
此外,如果您建议使用其他API /库来替换AxAcroPDFlib
,我很乐意阅读您使用的内容。
答案 0 :(得分:1)
我现在有了解决方案。早期测试很有希望。
简而言之,将Controls.Remove(yourPdfViewerControl)
添加到FormClosing
事件处理程序。当然,这将提供问题的即时缓解,但可能导致内存泄漏。从Container
删除控件后,您可以将null
置于其内存地址,并希望内存管理器完成其工作。
因此,为了防止泄漏,我创建了一个为PdfViewer
控制保留一个存储空间的类。如果Form
需要查看器,它会从可从任何表单访问的对象请求它,以防止内存泄漏。要在Dispose
关闭时避免Form
方法调用,请务必从Control
容器中删除此Controls
。
如果需要,我可以提供示例代码。