PowerShell - 释放 ComObject

3
我正在创建一个新的COM对象来打开一个弹出消息。
$a = new-object -comobject wscript.shell
$b = $a.popup(“WARNING“,0,”Box title”,0 + 0x30)

我注意到这个对象一直是开着的。我需要释放它吗? 下面的命令可以完成此操作吗?
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($a)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

3
这个问题是否回答了您的疑问?使用快捷方式(ReleaseComObject?)或者PowerShell 释放 COM 对象 - Lance U. Matthews
1个回答

3

是的,这是一个好的做法。 通过释放com对象,它会被标记为清理并在垃圾回收器运行时被销毁。

实际上,对象的引用计数会减少,如果减少到零,则在垃圾回收器运行时从内存中删除该对象。 您无法控制何时发生这种情况,但通过这种方式,您可以确保对象被删除。 请参见此处


所以如果我理解正确,每次发布的时候都需要按照我编写的方式准确地发布? - Bandit
@Bandit 好吧,最终当你退出 PowerShell 时,该对象将不再被引用,但我总是这样做以避免遇到内存短缺问题。 - Theo

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