2012-09-21 17 views
2

如果我把東西放在c#TLS中它什麼時候清理乾淨,還是我的工作是清理它?ThreadLocalStorage何時清理

我的意思是

一)將我總是空的TLS開始,無論一個線程如何開始一段給定的工作(一QueueUserWorkItem線程,WCF調用,...)

b)若我將昂貴的東西放在TLS中,當線程完成其工作時,它們將被GC'd。注意我不會說'結束',因爲我認爲大多數.NET線程來自一個或多個池,所以它們不一定就操作系統而言就結束了。或者是我的工作總是「終於」自己,以確保我不會在我身後留下一片混亂

回答

1

TLS條目將在線程放回池中時存活。

因此,換句話說,如果要使用System.Threading.ThreadPool類中的線程,則清除TLS中放置的所有內容是您的責任。

+0

我做了我應該做的第一件事 - 寫一個測試程序,並且你是正確的 – pm100