Estoy trabajando en C# 4.0 (winforms), depurando una aplicación con más de 10 hilos. Durante la depuración, hay un menú desplegable para seleccionar qué hilo debo depurar (solo accesible durante un punto de interrupción).¿Es posible nombrar un hilo en el depurador de Visual Studio?
Estos se muestran como "Win32 hilo", "subproceso de trabajo", "RPC de devolución de llamada de rosca", etc ...
Me encantaría nombrarlos desde dentro de mi código. Estoy ejecutando todos mis hilos a través de trabajadores de fondo.
Editar: mi solución. Esto puede no funcionar el 100% del tiempo, pero hace exactamente lo que necesita. Si las etiquetas son incorrectas en algún caso, eso está bien en el contexto con el que estoy trabajando.
En caso _dowork * de cada BackgroundWorker, yo ponga la siguiente línea de código en:
ReportData.TrySetCurrentThreadName(String.Format("{0}.{1}", MethodBase.GetCurrentMethod().DeclaringType, MethodBase.GetCurrentMethod().Name));
¿Qué es ...
public static void TrySetCurrentThreadName(String threadName)
{
if (System.Threading.Thread.CurrentThread.Name == null)
{
System.Threading.Thread.CurrentThread.Name = threadName;
}
}
API [ 'CreateThread'] (http://msdn.microsoft.com/en-us/library/ms682453.aspx) en Windows no permite nombres. ¿Asumo que los nombres en .NET son solo marcadores de posición? Si lo son, podrían haber sido de lectura/escritura (aunque no puedo pensar en un caso de uso para cambiar el nombre de un hilo). – Abel
Dado que estoy usando BackgroundWorkers para ejecutar todos mis multihilo, ¿es una acción segura? Asumiría que puede reutilizar hilos según lo necesite, por lo que solo nombrar una vez puede no ser aceptable. – greggorob64
@Abel: los hilos .NET no son necesariamente envoltorios delgados alrededor de los hilos WinAPI. – Vlad