C# 通过activex组件dynavis在.net中发生非托管内存泄漏

C# 通过activex组件dynavis在.net中发生非托管内存泄漏,c#,memory-leaks,activex,unmanaged-memory,C#,Memory Leaks,Activex,Unmanaged Memory,我使用的ActiveX组件最初只为.Net之前的版本编写,会导致内存泄漏。所有与.Net相关的内存(AxHost等)都已正确释放,但非托管内存仍在不断增长。(根据.Net mem profiler) 有没有办法强制从.Net中释放非托管内存?也许可以用一种处理不规则ActiveX组件的方法来解决这个问题 组件是Dynavix 2(dyDisplay、PicturedDocument、AxDYNAview)。不幸的是,不,.Net运行时不负责非托管内存 您可以做的是创建一个程序并使用它在两者之间进

我使用的ActiveX组件最初只为.Net之前的版本编写,会导致内存泄漏。所有与.Net相关的内存(AxHost等)都已正确释放,但非托管内存仍在不断增长。(根据.Net mem profiler)

有没有办法强制从.Net中释放非托管内存?也许可以用一种处理不规则ActiveX组件的方法来解决这个问题


组件是Dynavix 2(dyDisplay、PicturedDocument、AxDYNAview)。

不幸的是,不,.Net运行时不负责非托管内存

您可以做的是创建一个程序并使用它在两者之间进行通信。当您不再需要这些控件时,您可以杀死第二个程序(或者在其内存使用量增长过多时杀死它)


您甚至可以在控件中托管辅助应用程序的窗口,使用windows屏幕保护程序在中使用的相同技巧。

谢谢您的提示。我不明白IPC远程通信对我有什么帮助?我可以通过IPC远程处理从ActiveX调用远程功能,但这有什么帮助?我已经可以通过AxHost调用函数了?不,您将在单独的进程中托管控件(读:另一个程序与主程序同时运行)-要与此进程通信,您应该使用IPC远程通道。这样,当进程的内存使用超过某个限制时,就可以终止进程。