Dot-Net
是什麼阻止了 C# 中的執行緒被收集?
在 .NET 中,在這段程式碼之後,什麼機制可以阻止對
Thread像被垃圾收集?new Thread(Foo).Start(); GC.Collect();是的,假設某些東西對執行緒有引用是安全的,我只是在徘徊到底是什麼。由於某種原因,Reflector 沒有顯示給我
System.Threading,所以我自己無法探勘它(我知道 MS 發布了 .NET 框架的原始碼,我只是手邊沒有它)。
只要它正在執行,執行時就會保留對執行緒的引用。只要有人仍然保留該引用,GC 就不會收集它。
這取決於執行緒是否正在執行。如果你剛剛創建了 Thread 對象並沒有啟動它,它是一個普通的託管對象,即符合 GC 條件。一旦你啟動執行緒,或者當你為已經執行的執行緒(GetCurrentThread)獲取執行緒對象時,它就有點不同了。“公開對象”,託管執行緒,現在在 CLR 中保持強引用,因此您始終獲得相同的實例。當執行緒終止時,這個強引用被釋放,並且一旦你沒有任何其他對執行緒的引用(現在已經死了),託管對象就會被收集。