何时清理ThreadLocalStorage

时间:2012-09-21 22:30:34

标签: c# thread-local

如果我把它放在c#TLS中什么时候清理它,或者我的工作是清理它?

我的意思是

a)无论线程如何启动给定的工作(QueueUserWorkItem线程,WCF调用,......),我总是以空TLS开始。

b)如果我在TLS中放入昂贵的东西,那么当线程完成其工作时,它们将被GC。注意我不说'结束',因为我假设大多数.net线程来自一个或多个池,因此就操作系统而言它们并不一定会结束。或者我的工作是始终“终于”自己确保我不会在我身后留下一团糟

1 个答案:

答案 0 :(得分:1)

TLS条目将在一个线程放回池中后继续存在。

因此,换句话说,如果您打算使用System.Threading.ThreadPool类中的线程,那么您有责任清理放在TLS中的所有内容。