一个用C#编写的COM服务器对象能否立即发现客户端释放它?

3

对象可以知道客户端何时创建它,因为构造函数会运行。

但由于C#没有确定性析构函数,因此只有在垃圾回收器最终清除对象之前,Dispose或Finalize才会被调用。

是否有一种方法使服务器对象能够及时发现其客户端已释放它?此时我不需要释放对象,只需要调用一个方法。

谢谢, ++PLS

2个回答

2
不,CCW(COM可调用包装器)位于中间。 当引用计数达到零时,它仅放弃对托管对象的引用,以便最终可以收集该对象。 你无法连接到CCW,它是不透明的,并且不会生成任何事件。

0

Dispose 的目的是使对象销毁变得确定性,而不是等待 GC 调用终结器。无论如何,你可以调用 Marshal.ReleaseComObject 来减少 COM 对象的引用计数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接