2

私は現在、Powerpoint 2010 用のアプリケーション レベルのアドインを作成しています。問題は、アプリケーションを閉じると、プロセスがメモリに残っていることです。一度に 1 つの Powerpoint インスタンスしか開きません。

アドインでオブジェクトを処理する方法に問題があると思いますが、何が問題なのかわかりません。それらを適切に処分するには、何か特別なことをする必要があるのでしょうか?

私のアドインでは、次のオブジェクトを使用します。タイプに「UPnP」があるものは、Intel の UPNP ライブラリからインスタンス化されます。これらの命令は、関数またはサブルーチンの前に、Ribbon1 クラスにあります。

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

答えを探して Google を検索しましたが、何も見つかりません。

4

2 に答える 2

2

ThisAddIn_Shutdownすべての COM ハンドル (イベント、RCW など) とその他のアンマネージ リソースを処理し、適切に破棄する必要があります。

適切な COM オブジェクトの破棄に関するこのリファレンスと、シャットダウンのベスト プラクティスに関するこのMSDN の投稿をお読みください。

Powerpointが実行されたままになる場合は、すべての COM ハンドルが適切に解放されていません。

于 2012-08-20T14:04:53.553 に答える
1

変数「aplicacion」を宣言するときに、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 に答える