我不理解官方文件中的解释:
逻辑线程可以从一个托管线程跳转到另一个托管线程.
ThreadContext和ThreadLogicalContext有什么不同?有人可以详细说明吗?
谢谢.
我应该回过头来把它添加到我自己的问题中(上面链接的Stefan Egli)......
据我所知,两者之间的实际差别很小.
ThreadContext将信息存储在使用Thread.SetData存储的Dictionary中.
ThreadLogicalContext将其信息存储在使用CallContext存储的Dictionary中.
存储在CallContext中的信息与使用Thread.SetData存储的信息具有几乎相同的可访问性.也就是说,信息是对首先存储信息的线程的访问.
现在,如果ThreadLogicalContext使用了CallContext.LogicalSetData(或者如果使用CallContext.SetData存储的Dictionary实现了标记接口,IThreadAffinative)那么那将会有很大的不同.在这种情况下,存储的任何信息(LogicalSetData)都可以在同一个线程中访问,并传递给子线程.此外(与逻辑线程一起流动),信息可以跨越远程调用和跨AppDomains流动(如果数据是可序列化的).
我会提供一些链接,但我在iPhone上工作,所以有点尴尬.Stefan Egli在上面发布的链接中有一些很好的链接.
另外,请查看9月份Jeffrey Richter的博客,了解有关CallContext.LogicalSetData的文章.我使用他的测试程序作为比较CallContext.SetData和CallContext.LogicalSetData与Thread.SetData vs [ThreadStatic]的基础.上次我查了一下,这是他发布的最后一件事.
当我可以轻松访问计算机时,会尝试返回并发布更多链接和/或一些示例代码.
祝好运!