Наследственная нить локальная в .NET - PullRequest
3 голосов
/ 22 апреля 2011

.NET 4.0 представил ThreadLocal<T> класс, который великолепен.Теперь мой сценарий использования приложения требует чего-то вроде класса InheritableThreadLocal в Java.Есть ли что-нибудь подобное в .NET?Если нет, то как новый поток может инициализировать свои локальные переменные потока переменными из родительского потока?Я полагаю, мне нужно использовать фабричный метод инициализации , но я не уверен, что туда вставить.

1 Ответ

0 голосов
/ 24 апреля 2011

Самое близкое, о чем я могу подумать, - это использовать ILogicalThreadAffinitive и сохранить ваш объект в CallContext потока с помощью CallContext.SetData.

Объект, реализующий ILogicalThreadAffinitive, будет проходить через переключатели логического контекста, такие как BeginInvoke и ThreadPool.QueueUserWorkItem. Также обратите внимание, что этот метод более безопасен, чем использование ThreadLocals для случаев, когда вы используете пул потоков, потому что нет никакого способа, которым вы можете "связать" локальное значение потока в потоке и заставить другой поток прийти и случайно его забрать.

...