2010-01-21 2 views
6

Есть ли способ сделать новорожденные потоки наследовать значения состояния ThreadStatic (или что-то вроде этого) на их родительских потоках? Я хотел бы использовать это (или что-то вроде этого) для реализации специальных переменных с динамической областью действия, которые содержат информацию о контексте операций/задач для использования для отслеживания/регистрации и т. Д. Является ли это разумным подходом и может ли он работать?Наследование значений ThreadStatic для реализации динамического охвата в C# /. NET в многопоточном контексте

ответ

6

Вы не можете «наследовать» значения. Однако новый ThreadLocal<T> class для .NET 4 позволяет вам предоставить Func<T> в constructor, который может инициализировать поток на основе состояния родителя. Это обеспечило бы разумное обходное решение.

+0

Спасибо, это, безусловно, интересно. Но как я могу позволить ребенку получить доступ к состоянию родителя? –

+0

Вы можете использовать лямбда в родительском объекте, который обеспечивает доступ к переменной (-ам), которая требуется для инициализации ThreadLocal . Это использует форму ленивой инициализации, поэтому при первом использовании вы получите состояние текущего родителя. –

+0

Это не то, что мне нужно в то время по какой-то причине, я забыл, но было приятно узнать об этом в любом случае. –

Смежные вопросы