回答

3

GC需要凍結所有線程才能檢查所有對象。如果某個線程正在運行並正在修改/創建一個對象,它如何完成工作?

最好不要這樣做。

您可以執行的操作是在您不希望中斷的狀態下調用GC.Collect()和GC.WaitForPendingFinalizers()。這會給你一些時間。

0

非託管代碼不允許訪問未固定的託管對象,但它在垃圾回收期間將不會阻塞地運行。如果你有某些例程必須在垃圾收集期間保持運行,並且它們不需要訪問未固定的託管對象,那麼可以將這些例程寫入非託管代碼,並且GC不會影響它們。