2011-08-03 6 views
0

元は、メモリリークの原因となるpre .Net日だけに書き込まれたActiveXコンポーネントを使用しています。 .Net関連のすべてのインテンシブ(AxHostなど)は適切にリリースされていますが、アンマネージメモリは増え続けています。 (.Net memプロファイラによる)アクティブマネーコンポーネントdynavisを通じてネットで管理されていないメモリリーク

.Netから強制的にアンマネージメモリを解放する方法はありますか?おそらく、これは、難しいActiveXコンポーネントを処理する方法で解決できますか?

コンポーネントはDynavix 2(dyDisplay、PictureDocument、AxDYNAview)です。

答えて

1

残念ながら、.Netランタイムは管理されていないメモリの原因となりません。

あなたができることは、プログラムを作成し、IPC Remotingを使用して2つの間で通信することです。コントロールが不要になったときに、2番目のプログラムを終了させることができます(または、メモリ使用量が増えすぎると、2番目のプログラムを終了させることができます)。

コントロールでセカンダリアプリケーションのウィンドウをホストすることもできます。Windowsのスクリーンセーバーと同じ方法を使用してpreview modeを実行します。

+0

ヒントのおかげで。私はIPC Remotingがどのように私を助けるだろうが、undestandをしないでください?私はIPC Remotingを介してActiveXからリモートファンクションを呼び出すことができますが、それはどのように役立ちますか?私はすでにAxHost経由で関数を呼び出すことができますか? – Johannes

+0

あなたは別のプロセスでコントロールをホストしません。(読んでください:メインプログラムと同時に実行する別のプログラム) - このプロセスと通信するには、IPCリモーティングチャネルを使用する必要があります。そうすれば、メモリ使用量が一定の限界を超えたときにプロセスを強制終了することができます。 –

関連する問題