gpt4 book ai didi

com - 做COM时是否需要在C#4中调用Marshal.ReleaseComObject?

转载 作者:行者123 更新时间:2023-12-02 00:31:25 24 4
gpt4 key购买 nike

我有 VS2010,并向我的项目添加了对 COM 库的引用,并且 VS 在项目中嵌入了一个主要的互操作。

如果我从 COM 库中引用对象并且我想在不等待 GC 的情况下快速处理它们,是否需要调用 ReleaseComObject ?

最佳答案

Marshal.ReleaseComObject 提供了一种方法,可以立即从托管代码中使用该 COM 对象的任何地方删除对该 COM 对象的引用(因为它从持有它的 RCW 中释放了底层 IUnknown)。

正如 Hans 所指出的,通常正确的做法是简单地将您的对象清空,以允许 CLR 和 GC 在适当的时间进行 COM 对象销毁。

但是,在您需要立即采取行动的情况下(COM 对象拥有昂贵/稀缺的资源,或者可能在排序非常复杂的关机期间),调用 ReleaseComObject 可能是正确的做法。

马丁

关于com - 做COM时是否需要在C#4中调用Marshal.ReleaseComObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com