2013-07-10 35 views
0

我需要一個對象靜態可用於:將對象附加到邏輯控制流的最佳方式是什麼?

(1)上我的程序運行 (2)該線程 發表的所有主題(3)所有的線程池的任務由線程入隊當前線程

我想通過這種方式做到這一點的一種方法是使用一個有條件的WeakTable鍵在Thread.CurrentPrincipal.Identity上,因爲該對象(當set)似乎被.NET框架恰當地傳遞。但是,我想知道(1)這種方法是否存在任何限制/問題? (2)是否有另一個更清晰的方法來解決已經內置到.NET框架中的這個問題?

回答

0

我發現最好的方法是做到這一點是使用「LogicalCallContext」。基本上,我保持靜態ConcurrentDictionary<Guid, MyObject>,並使用CallContext.Logical[Get|Set]Data("uniqueStringKey", guid);將guid與特定的邏輯控制流相關聯。我發現這可以與手動創建的線程和線程池正常工作。

相關問題