.NET中可继承的本地线程

时间:2011-04-22 09:54:16

标签: .net multithreading thread-local

.NET 4.0引入了ThreadLocal<T>类,这很棒。现在,我的app用例需要类似Java的InheritableThreadLocal类。在.NET中有类似的东西吗?如果没有,新线程如何用来自父线程的线程初始化其线程局部变量?我想我需要使用initialization factory method,但不知道该放什么。

1 个答案:

答案 0 :(得分:0)

我能想到的最接近的事情是使用ILogicalThreadAffinitive并使用CallContext.SetData将对象存储在线程的CallContext中。

实现ILogicalThreadAffinitive的对象将流经逻辑上下文切换,例如BeginInvoke和ThreadPool.QueueUserWorkItem。另请注意,这种方法比使用ThreadLocals比使用线程池更安全,因为你无法在线程上“绑定”一个线程局部值并让另一个线程意外地接受它。