不要使用点网中的垃圾收集器清理某些资源

时间:2013-10-16 11:50:09

标签: .net garbage-collection

有没有什么办法可以告诉垃圾收集器不清理dot net中的某些资源。我的意思是我需要某些托管资源是干净的,而不是。我没有任何实际情况。但只是想知道它是否可能。

感谢。

2 个答案:

答案 0 :(得分:2)

除了简单地将对象的引用存储在静态变量中之外,您始终可以使用GCHandle添加引用。使用它的Alloc()方法。

然而,这有点像鸡蛋和鸡蛋问题,如果您想要发布引用,那么您需要将GCHandle存储在某处,以便您可以调用其Free()方法。它实际上只适用于互操作场景,其中非托管代码通常通过委托间接引用该对象。 GC无法看到这样的引用,因此必须创建一个明确的引用,GCHandle对此有好处。否则,我可以想到提出这个问题的唯一原因,这确实需要实际使用。

答案 1 :(得分:1)

如果您的对象仍在被引用,则不会被收集。否则,您可以通过GC.KeepAlive()方法告诉垃圾收集器使对象保持活动状态。

  

引用指定的对象,使其不符合垃圾条件   从当前例程开始到收集点   这个方法叫做。