带有事件对象生存期的进程外COM [英] Out-of-proc COM with events object lifetime

查看:93
本文介绍了带有事件对象生存期的进程外COM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个从托管代码调用的进程外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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆