2010-01-25 22 views
10

Estoy usando ThreadPool para ejecutar un conjunto de tareas en un servicio de Windows. El servicio engendra nuevos hilos cada 10 segundos. Me gustaría registrar el nombre del hilo que recogió una tarea particular de la base de datos. ¿Es posible obtener el nombre del hilo?Nombre del hilo en el ThreadPool - C#

+0

¿Qué quiere decir con el "nombre" del hilo? –

+0

@Anon - Creo que los hilos tienen nombres asignados – Nick

Respuesta

7

No sé si las roscas ThreadPool se les asigna una significativa Name, pero siempre debe ser capaz de utilizar el ManagedThreadId del CurrentThread con fines de depuración/madereras.

+0

Gracias. ¿Tiene algún valor almacenar el ManagedThreadId? ¿Cómo lo usaría de manera realista en la depuración? – Nick

+0

Bueno, es un 'int' que es el mismo cada vez que se ejecutan dos UserWorkItems en el mismo subproceso de ThreadPool. El valor solo tiene significado durante la ejecución de un programa. Dudo que haya algún valor al iniciar sesión con nombres o ID de hilos de ThreadPool. Es un detalle de implementación que UserWorkItem se ejecuta en cada subproceso. En realidad no deberías preocuparte por esto. UserWorkItem no debe influirse entre sí si se ejecutan en el mismo hilo. – dtb

9

La forma más fácil para esto será desde dentro del contexto de cada hilo y cuando tenga la propiedad CurrentThread disponible y todas las propiedades que se atribuyen a un hilo:

System.Threading.Thread.CurrentThread.Name 

Como un comentario anterior ha mencionado, aunque , qué tan significativo será esto en un grupo de subprocesos, no estoy seguro.

1

No intente cambiar el estado del subproceso al utilizar subprocesos del grupo. Estos hilos no te pertenecen, pertenecen al tiempo de ejecución. No quieres cambiar cosas que no te pertenecen.