.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. 線程,繼承
- 2. protobuf-net繼承
- 3. 多線程和繼承
- 4. .net 4.0繼承.net 3.5 web.config?
- 5. 新的線程(Runnable runnableObj)比。繼承Thread
- 6. 繼承自.Net的Type類.Net
- 7. .NET中的RIA服務和繼承EF
- 8. .net中多重繼承的疑問
- 9. 其他線程可以看到繼承的非final字段嗎?
- 10. 春.NET繼承實現
- 11. 繼承和接口.NET
- 12. 繼承.NET圖表控件
- 13. .NET:繼承MyControl for Windows.Forms
- 14. .NET繼承:從基類
- 15. .NET枚舉繼承替代
- 16. .NET ASP網頁繼承
- 17. .net索引類繼承
- 18. PHP使類繼承可繼承
- 19. 繼承,後臺線程和RAII
- 20. 從父線程繼承全局值
- 21. 如何在.NET中創建可繼承的Semaphore?
- 22. 結構是否可以從.NET中的類繼承?
- 23. JFlex中可以繼承嗎?
- 24. 在C#.NET中繼承外部窗口
- 25. 什麼不能在.Net中繼承?
- 26. ASP.NET Framework中Signalr的集線器繼承
- 27. 在VB .Net中可以實現多重繼承嗎?
- 28. Django Compressor離線繼承
- 29. 其他繼承類中的繼承類
- 30. .net中的存儲庫模式和繼承.net
一個有趣的問題;不是一個真正的直接答案,而是*個人*我傾向於通過將每個線程綁定到一個上下文實例來完全避免這種情況。然後我可以在線程之間共享上下文實例,也可以不共享;如我所選。 – 2011-04-22 10:03:03
@Marc:我同意這是大多數情況下的首選方法。然而,在這種情況下,我的代碼可能會調用庫代碼,這些代碼可能(或可能不會)產生回調我的代碼的線程。所以我並不總是在控制子線程創建。我可能會在每個回調入口處設置一個陷阱來檢查它是否是一個新線程來初始化其實例數據,但這比可繼承的本地線程存儲方法更笨拙。 – 2011-04-22 10:15:07
夠公平的;如果你錯過了一個更簡單的選項,我只是想提一下它。鑑於上述評論,我懷疑你是對的 - 但我不知道像.NET中的InheritableThreadLocal這樣的東西,對不起。 – 2011-04-22 10:16:59