¿Qué es un código de salida de hilo?

¿Qué es exactamente un código de salida de subproceso en la ventana de Salida durante la depuración? ¿Qué información me da? ¿Es de alguna manera útil o simplemente una cosa interna que no debería molestarme?

The thread 0x552c has exited with code 259 (0x103). The thread 0x4440 has exited with code 0 (0x0). 

¿Existe algún tipo de lista de posibles códigos de salida junto con su significado?

En realidad no parece haber muchas explicaciones sobre este tema, aparentemente, pero se supone que los códigos de salida se usan para dar una indicación de cómo salió el hilo, 0 tiende a significar que salió de manera segura mientras que cualquier otra cosa tiende a significarlo no salió como se esperaba Pero este código de salida se puede configurar en código usted mismo para pasar por alto esto por completo.

El enlace más cercano que pude encontrar para ser útil para obtener más información es este

Cita desde el enlace de arriba:

Cualquiera que sea el método de salida, el número entero que devuelve de su proceso o subproceso debe ser valores de 0 a 255 (8 bits). Un valor cero indica éxito, mientras que un valor distinto de cero indica falla. Aunque puede intentar devolver cualquier valor entero como un código de salida, solo el byte más bajo del entero se devuelve de su proceso o subproceso como parte de un código de salida. Los bytes de orden superior son utilizados por el sistema operativo para transmitir información especial sobre el proceso. El código de salida es muy útil en progtwigs por lotes / shell que ejecutan otros progtwigs condicionalmente dependiendo del éxito o fracaso de uno.


De la documentación para GetEXitCodeThread

Importante La función GetExitCodeThread devuelve un código de error válido definido por la aplicación solo después de que termina el hilo. Por lo tanto, una aplicación no debe usar STILL_ACTIVE (259) como un código de error. Si un hilo devuelve STILL_ACTIVE (259) como un código de error, las aplicaciones que prueban este valor podrían interpretar que significa que el hilo aún se está ejecutando y continuar probando la finalización del hilo una vez que el hilo ha terminado, lo que podría poner el aplicación en un bucle infinito.


Mi comprensión de todo esto es que el código de salida no importa tanto si está utilizando subprocesos dentro de su propia aplicación para su propia aplicación. La excepción a esto es posiblemente si está ejecutando un par de hilos al mismo tiempo que tienen una dependencia el uno del otro. Si existe la necesidad de que una fuente externa lea este código de error, puede configurarlo para que otras aplicaciones conozcan el estado de su hilo.

Como Sayse mencionó, el código de salida 259 (0x103) tiene un significado especial, en este caso el proceso que se está depurando aún se está ejecutando.

Vi esto mucho con la depuración de servicios web, porque el hilo continúa ejecutándose después de ejecutar cada llamada al servicio web (ya que todavía está escuchando para otras llamadas).

lo que me sucedió es que tengo muchos proyectos en mi solución. Quería depurar el proyecto 1, sin embargo, el proyecto 2 se estableció como el proyecto de inicio predeterminado. Lo arreglé por, hago clic derecho en el proyecto y selecciono “Establecer como proyecto de inicio”, luego la depuración en ejecución está bien.