Para un tipo de función de "información de registro para soporte", me gustaría enumerar y volcar información de hilo activo.Obteniendo la lista de hilos actualmente activos administrados en .NET?
Soy consciente de que las condiciones de carrera pueden hacer que esta información sea poco precisa, pero me gustaría tratar de obtener el mejor resultado posible, incluso si no es 100% exacto.
Miré Process.Threads, pero devuelve los objetos ProcessThread, me gustaría tener una colección de objetos Thread, para que pueda registrar su nombre, y si son hilos de fondo o no.
¿Existe tal colección disponible, aunque solo sea una instantánea de los hilos activos cuando la llamo?
es decir.
Thread[] activeThreads = ??
Nota, para ser claro, no estoy preguntando por Process.Threads, esta colección me da mucho, pero no todo lo que quiero. Quiero saber cuánto tiempo están usando los hilos específicos específicos de nuestra aplicación (lo que significa que tendré que considerar conectar los dos tipos de objetos más adelante, pero para empezar, los nombres son más importantes que el tiempo de la CPU).
¿'System.Diagnostics.ProcessThreads' se relacionan directamente con' System.Threading.Threads'? El primero es un hilo del sistema operativo, mientras que este último es un hilo gestionado. –
No, no lo son. –
¿Qué información adicional de la clase Thread necesita que no tenga en la clase ProcessThread? Un ThreadId de sistema operativo no tiene una relación fija con un subproceso administrado, porque un host no administrado puede controlar la relación entre subprocesos administrados y no administrados. Específicamente, un host sofisticado puede usar la API CLR Hosting para programar muchos hilos administrados contra el mismo hilo del sistema operativo, o para mover un hilo administrado entre diferentes subprocesos del sistema operativo. – serhio