.NET 4.0 introduced ThreadLocal<T>
class, which is great. Now, my app use case requires something like Java's InheritableThreadLocal
class. Is there anything like that in .NET? If not, how can a new thread initializes its thread locals variables with those from the parent thread? I suppose I need to make use the initialization factory method but not sure what to put in there.
The closest thing I can think of is using ILogicalThreadAffinitive and storing your object in the thread's CallContext with CallContext.SetData.
Object implementing ILogicalThreadAffinitive will flow across logical context switches, such as BeginInvoke and ThreadPool.QueueUserWorkItem. Also note, this method is safer than using ThreadLocals for cases where you're using the thread pool because there's no way you can "strand" a thread local value on a thread and have another thread come and pick that up accidentally.
来源:https://stackoverflow.com/questions/5754281/inheritable-thread-local-in-net