2013-10-16 16 views
0

使用垃圾收集器無法清理某些資源有什麼辦法,我們可以告訴垃圾收集器在點網不清理某些資源。我的意思是我需要某些託管資源是乾淨的,而且肯定不是。我沒有任何實際的情況。但只是想知道這是否可能。不要在點網

謝謝。

+0

通過保持對它的引用? – CodeCaster

回答

1

如果你的對象仍然被引用它不會被收集。否則,你可以告訴垃圾收集器,以保持對象活着的GC.KeepAlive()方法。

參考指定的對象,這使得它不符合爲從當前例程其中 此方法被稱爲點的開始垃圾 集合。

2

除了簡單地將對象的引用存儲在靜態變量中,您始終可以使用GCHandle添加引用。使用它的Alloc()方法。

但是這是一個有點雞和蛋的問題的,如果你要釋放的引用,那麼你需要存儲的GCHandle的地方,所以你可以調用它的免費()方法。這確實是只有在互操作場景中的非託管代碼間接引用的對象,通常是通過一個委託實用。 GC不能看到這樣的引用,以便明確一個必須被創造,是的GCHandle好了點。否則,我可以考慮問這個問題的唯一原因,這確實需要實際使用。