.NET 4.0引入了ThreadLocal<T>
类,这很好。现在,我的应用使用案例需要类似Java的InheritableThreadLocal
类。 .NET中有没有这样的东西?如果不是,新线程如何能够使用父线程的线程初始化线程本地变量?我想我需要使用initialization factory method,但不知道该放什么。.NET中可继承的线程
3
A
回答
0
我能想到的最接近的事情是使用ILogicalThreadAffinitive并使用CallContext.SetData将您的对象存储在线程的CallContext中。
实现ILogicalThreadAffinitive的对象将流经逻辑上下文切换,例如BeginInvoke和ThreadPool.QueueUserWorkItem。还要注意,与使用ThreadLocals相比,在使用线程池的情况下,这种方法更安全,因为您无法在线程上“串联”线程本地值,并让另一个线程无意中发生异常。
+0
我查看了文档,但不知道如何使用它来模仿InheritableThreadLocal的行为。你能详细说明你的答案吗? – 2011-04-25 02:51:40
相关问题
- 1. protobuf-net继承
- 2. 多线程和继承
- 3. .net 4.0继承.net 3.5 web.config?
- 4. 新的线程(Runnable runnableObj)比。继承Thread
- 5. 继承自.Net的Type类.Net
- 6. 其他线程可以看到继承的非final字段吗?
- 7. .net中多重继承的疑问
- 8. .NET中的RIA服务和继承EF
- 9. PHP使类继承可继承
- 10. 继承,后台线程和RAII
- 11. 继承.NET图表控件
- 12. .NET继承:从基类
- 13. 春.NET继承实现
- 14. 如何在.NET中创建可继承的Semaphore?
- 15. JFlex中可以继承吗?
- 16. ASP.NET Framework中Signalr的集线器继承
- 17. 在C#.NET中继承外部窗口
- 18. 什么不能在.Net中继承?
- 19. 其他继承类中的继承类
- 20. 在VB .Net中可以实现多重继承吗?
- 21. Java可比较的继承
- 22. XmlRootAttribute是可继承的吗?
- 23. .net中的存储库模式和继承.net
- 24. 通用接口的.NET继承
- 25. 在可可中继承子类
- 26. 继承Python编程
- 27. 与.net继承和成员可见奇怪的问题
- 28. 在python中以编程方式向类继承继承?
- 29. Ruby类中的可继承属性
- 30. aidl中的可传递继承
一个有趣的问题;不是一个真正的直接答案,而是*个人*我倾向于通过将每个线程绑定到一个上下文实例来完全避免这种情况。然后我可以在线程之间共享上下文实例,也可以不共享;如我所选。 – 2011-04-22 10:03:03
@Marc:我同意这是大多数情况下的首选方法。然而,在这种情况下,我的代码可能会调用库代码,这些代码可能(或可能不会)产生回调我的代码的线程。所以我并不总是在控制子线程创建。我可能会在每个回调入口处设置一个陷阱来检查它是否是一个新线程来初始化其实例数据,但这比可继承的本地线程存储方法更笨拙。 – 2011-04-22 10:15:07
够公平的;如果你错过了一个更简单的选项,我只是想提一下它。鉴于上述评论,我怀疑你是对的 - 但我不知道像.NET中的InheritableThreadLocal这样的东西,对不起。 – 2011-04-22 10:16:59