我有一个VB6应用程序,该应用程序引用了VB6 ActiveX.exe应用程序,该应用程序通过COM引用了C#.Net库。该C#库具有可注册的回调方法,我将其扩展到原始应用程序。C#库有两种方法。只需调用回调即可。另一个信号通知一个事件,该事件触发一个简单的线程来调用回调。如果在我的原始应用程序中,我仅使用直接方法,则当我设置activeX = Nothing时,activeX应用程序将从任务管理器窗口中消失。如果我只调用一次线程方法,则终止时,ActiveX应用程序最多五分钟不会从任务管理器中消失。最终它确实消失了。有没有人处理过这种行为,如果是的话,如何使activeX终止?
最有可能的是,您的C#对象没有实现IDisposable,也没有明确地处理它们。在这种情况下,如果将回调对象从VB6 activex exe传递到C#库,则即使在释放对象之后,该引用仍将其引用保留在其对象中,因为C#会对其进行垃圾回收。最终,收集器清理完毕后,将释放这些C#对象,然后释放对VB6回调对象的引用,所有内容都将清除。
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |