c# .net

c# - Almacenamiento local de hilo



.net (4)

Otra opción en el caso de que el alcance sea un problema que puede usar Ranuras de datos con nombre, por ejemplo

//setting LocalDataStoreSlot lds = System.Threading.Thread.AllocateNamedDataSlot("foo"); System.Threading.Thread.SetData(lds, "SomeValue"); //getting LocalDataStoreSlot lds = System.Threading.Thread.GetNamedDataSlot("foo"); string somevalue = System.Threading.Thread.GetData(lds).ToString();

Esta es solo una buena idea si no puede hacer lo que James Kovacs y AdamSane describieron

¿Cuál es la mejor manera de almacenar alguna variable local en cada hilo?


Otra opción es pasar un parámetro al método de inicio de hilo. Deberá mantenerse dentro del alcance, pero puede ser más fácil de depurar y mantener.


Si usa .Net 4.0 o superior, que yo sepa, la forma recomendada es usar System.Threading.ThreadLocal<T> que también ofrece una inicialización perezosa como un bono.


Puede indicar que las variables estáticas deben almacenarse por subproceso utilizando el atributo [ThreadStatic] :

[ThreadStatic] private static int foo;