我可以(安全地)在ADO.NET数据服务中使用ThreadStatic属性吗?

时间:2009-11-18 16:02:55

标签: .net multithreading garbage-collection wcf-data-services threadstatic

我想在ADO.NET数据服务中存储每线程数据。在特定于线程的静态变量上使用ThreadStatic属性是安全的,还是会遇到问题?我担心的是,在请求完成并且线程死亡后,我的ThreadStatic变量不会被垃圾收集。

如果有更好的方法来做我想做的事,请告诉我。这似乎是最简单的解决方案。

任何信息都会非常有用,谢谢!

2 个答案:

答案 0 :(得分:3)

我发现为每个请求创建的DataService对象位于标有IsThreadPoolThread = true的线程上,因此在这种情况下使用[ThreadStatic]属性是不合适的,因为来自先前请求的信息可能以后可以使用(不可取)。

答案 1 :(得分:0)

任何使用ThreadStatic标记的变量的生命周期至少与创建它们的线程一样长。在线程终止之后,它们像任何其他值一样受垃圾收集的影响。