2010-01-21 4 views
6

Y a-t-il un moyen de faire en sorte que les threads nouvellement créés héritent des valeurs de l'état ThreadStatic (ou quelque chose comme ça) sur leurs threads parents? Je voudrais utiliser ceci (ou quelque chose comme ça) pour implémenter des variables spéciales "à portée dynamique" qui contiennent des informations de contexte d'opération/tâche à utiliser pour le suivi/enregistrement, etc. Est-ce une approche raisonnable et peut-elle fonctionner?Héritage des valeurs ThreadStatic pour implémenter la portée dynamique dans C#/.NET dans un contexte multithread

Répondre

6

Vous ne pouvez pas "hériter" des valeurs. Toutefois, le nouveau ThreadLocal<T> class pour .NET 4 vous permet de fournir un Func<T> dans le constructor, qui peut initialiser le thread en fonction de l'état du parent. Cela fournirait une solution de contournement raisonnable.

+0

Merci, c'est certainement intéressant. Mais comment pourrais-je permettre à l'enfant d'accéder à l'état des parents? –

+0

Vous pouvez utiliser un lambda dans le parent qui fournit l'accès à la variable (s) en question qui sont nécessaires pour initialiser le ThreadLocal . Cela utilise une forme d'initialisation paresseuse, donc lors de la première utilisation, vous obtiendrez l'état du parent actuel. –

+0

cela n'a pas fait ce dont j'avais besoin à l'époque pour une raison que j'ai oubliée, mais c'était quand même sympa de le savoir. –

Questions connexes