带有事件对象生存期的进程外COM [英] Out-of-proc COM with events object lifetime
问题描述
我们有一个从托管代码调用的进程外COM对象.
方案1:
1.创建一个COM对象.
2.调用一些方法.
3.呼叫Marshal.FinalReleaseComObject.
4.几秒钟后,COM对象可执行文件从任务管理器中消失.
情形2:
1.创建一个COM对象.
2.订阅一些活动.
3.调用一些方法.
4.取消订阅事件.
5.呼叫Marshal.FinalReleaseComObject.
6. COM对象可执行文件永远不会从任务管理器中消失.
情形3:
1.创建一个COM对象.
2.订阅一些活动.
3.调用一些方法.
4.取消订阅事件.
5.呼叫Marshal.FinalReleaseComObject.
6.致电GC.Collect.
7.几秒钟后,COM对象可执行文件从任务管理器中消失了.
如何解决方案2以便可执行文件分解器?
We have an out-of-proc COM object that we call from managed code.
Scenario 1:
1. Create a COM object.
2. Call some methods.
3. Call Marshal.FinalReleaseComObject.
4. After a few seconds COM object executable disappears from task manager.
Scenario 2:
1. Create a COM object.
2. Subscribe to some events.
3. Call some methods.
4. Unsubscribe from events.
5. Call Marshal.FinalReleaseComObject.
6. COM object executable never disappears from task manager.
Scenario 3:
1. Create a COM object.
2. Subscribe to some events.
3. Call some methods.
4. Unsubscribe from events.
5. Call Marshal.FinalReleaseComObject.
6. Call GC.Collect.
7. After a few seconds COM object executable disappears from task manager.
How do you fix scenario 2 so executable disappers?
推荐答案
这里一个简单的复制?这可能是CLR COM互操作中的错误/效率低下.
-Karel
Can you post here a simple repro? It is possible that it is a bug/inefficiency in CLR COM interop.
-Karel
这篇关于带有事件对象生存期的进程外COM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!