2

我目前正在为 Powerpoint 2010 编写应用程序级插件,我的问题是当我关闭应用程序时,进程仍保留在内存中。我只在给定时间打开一个 Powerpoint 实例。

我认为问题在于我处理插件中对象的方式,但我找不到问题所在。也许我需要做一些特别的事情来妥善处理它们?

在我的插件中,我使用以下对象。类型中带有“UPnP”的那些是从英特尔的 UPNP 库中实例化的。这些指令在我的 Ribbon1 类中,在任何函数或 subs 之前。

Public dispositivo As UPnPDevice
Public servicio As UPnPService
Public WithEvents temporizador As Timers.Timer
Public WithEvents aplicacion As New Application
Public presentacion As Presentation
Public presentacionencurso As SlideShowView
Public diapositiva_actual As Slide
Public notas As SlideRange
Public puntero As Shape

我已经在谷歌上寻找答案,但没有任何结果。

4

2 回答 2

2

您需要处理ThisAddIn_Shutdown并正确处置所有 COM 句柄(事件、RCW 等)和其他非托管资源。

阅读有关正确处理 COM 对象的参考资料有关关闭最佳实践的 MSDN 帖子

如果Powerpoint继续运行,则说明您没有正确释放所有 COM 句柄。

于 2012-08-20T14:04:53.553 回答
1

当您声明变量“应用程序”时,您可能正在创建一个新的 Powerpoint 实例:

Public WithEvents aplicacion As New Application

这些事件都应该在 ThisAddIn 模块中可用(使用编辑器中 ThisAddIn 文档选项卡下的下拉菜单),您始终可以使用“Globals.ThisAddIn.Application”引用 Powerpoint 应用程序,因此您可能想要这样做:

Public aplicacion as Microsoft.Office.Interop.PowerPoint.Application = Globals.ThisAddIn.Application

布埃纳苏尔特!

于 2012-08-29T17:19:28.700 回答