我正在处理用C#编写的Windows窗体.NET应用程序,该应用程序需要显示具有所有相关功能(旋转对象,更改灯光等)的3D pdf。我正在使用AxAcroPDF COM控件,它运行平稳。问题是,当我尝试关闭放置控件的窗体时,有时在放置控件时它会挂起几秒钟而没有明显原因。我在测试期间加载的3D文件不是特别重。独立Adobe Reader中的文件完全相同,打开和关闭没有特别的延迟。
我在Windows窗体关闭事件中使用以下代码:

        private void DrawingForm_FormClosing(object sender, FormClosingEventArgs e)
        {
        this.axAcroPDF.Dispose();
        Application.DoEvents();
        CoFreeUnusedLibraries(); }

        [System.Runtime.InteropServices.DllImport("ole32.dll")]
        static extern void CoFreeUnusedLibraries();


有趣的是,如果仅显示文件,则窗体将正常关闭,但是,当旋转3D文件中的对象时,窗体在关闭时会挂起。挂起时,将显示手表的图标(在独立的Adobe PDF中显示相同)。挂起时间在15到20秒之间。
我试图在webbrowser控件中显示文件,但得到了类似的结果。造成此问题的原因是什么?
我试图搜索其他稳定控件,但没有找到任何具有3D支持的控件。

最佳答案

FormClosing事件处理程序中,添加2行:



this.Controls.Remove(yourAxAcroPDFControl);


yourAxAcroPDFControl = null;

在Adobe更新之前,将其视为临时解决方案。我检查了Adobe SDK示例,尽管它们是由Adobe自己编写的,但它们也引起了问题,因此我们可以期望他们认为这是一个问题。

关于c# - 关闭表单时,AxAcroPDF控制窗口表单会挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41022136/

10-17 00:47