El hilo ha salido con el código 0 (0x0) sin excepción no controlada

97

Al depurar mi aplicación C #, he notado una gran cantidad de apariciones de la siguiente oración:

El hilo ha salido con el código 0 (0x0).

La aplicación sigue funcionando y no se detecta ninguna excepción.

La aplicación se ejecuta en Windows 7 de 64 bits y está depurada con la plataforma x86.

Gionata
fuente
1
¿Estás seguro de que esos son tus hilos? Si es así, ¿no esperas que terminen?
SLaks

Respuestas:

142

Este es solo un mensaje de depuración. Puede desactivarlo haciendo clic derecho en la ventana de salida y desmarcando Thread Exit Messages.

http://msdn.microsoft.com/en-us/library/bs4c1wda.aspx

Además de programar desde su aplicación, la ventana Salida puede mostrar información sobre:

  • Módulos que el depurador ha cargado o descargado.

  • Excepciones que se lanzan.

  • Procesos que salen.

  • Hilos que salen.

BlueM
fuente
10

Bueno, una aplicación puede tener muchos subprocesos ejecutándose en paralelo. Algunos son ejecutados por usted, el codificador, otros son ejecutados por clases marco (especialmente si se encuentra en un entorno GUI).

Cuando un hilo ha terminado su tarea, sale y deja de existir. Es decir, no hay nada alarmante en esto y no debería importarle.

Kek
fuente
Los hilos de los que he hablado no son míos (o no pertenecen a mi aplicación). Sin embargo, mi aplicación necesita conectarse a un servidor Linux AIX que regresa con una gran cantidad de procesos inactivos. No tengo una idea clara sobre el funcionamiento de este servidor (y cuáles son sus tareas) pero supongo que los hilos antes mencionados podrían afectar el comportamiento del servidor.
Gionata
Bueno, tal vez los hilos realmente afecten su aplicación, pero el mensaje que recibe le dice que terminan exitosamente. Así que podría intentar averiguar por qué se ejecutan (menú Depurar => ventanas => subprocesos), pero es normal que terminen.
Kek
Terminan normalmente, pero los procesos inactivos del servidor Linux podrían ser un efecto secundario de los subprocesos de .net framework. Quizás la aplicación tenga varios errores de programación en la implementación de múltiples subprocesos. ¿Es posible?
Gionata
No lo sé. ¿Este servidor linuw está ejecutando .NET? usando Mono? ¿Cuál es tu problema en realidad? ¿Los procesos desaparecidos?
Kek
Sí, los procesos dufunct bloquean el servidor Linux.
Gionata
7

Para completar la respuesta aceptada de BlueM, puede desactivarla aquí:

Herramientas> Opciones> Depuración> Configuración de salida general> Mensajes de salida del hilo: Desactivado

alphanoch
fuente
5
La respuesta aceptada de BlueM en realidad tiene una solución más simple: "Puede desactivar eso haciendo clic derecho en la ventana de salida y desmarcando el mensaje de finalización del hilo"
Simon M --Kenzie
5

si su aplicación usa subprocesos directa o indirectamente (es decir, detrás de escena como en una biblioteca de terceros) es absolutamente común que los subprocesos terminen después de que terminan ... que es básicamente lo que describe ... el depurador muestra este mensaje ... puede configurar el depurador para que no muestre este mensaje si no lo desea ...

Si lo anterior no ayuda, proporcione más detalles, ya que no estoy seguro de cuál es exactamente el problema al que se enfrenta ...

Yahia
fuente
1

El marco crea subprocesos para admitir cada ventana que crea, por ejemplo, como cuando crea un Formulario y lo muestra (). Cuando las ventanas se cierran, los hilos terminan (es decir, salen).

Este es un comportamiento normal. Sin embargo, si la aplicación está creando subprocesos y hay muchos mensajes de salida de subprocesos correspondientes a estos subprocesos (uno podría saberlo posiblemente por los nombres de los subprocesos, dándoles nombres distintos en la aplicación), entonces quizás esto sea indicativo de un problema con la aplicación creando subprocesos cuando no debería, debido a un error de lógica del programa.

Sería un seguimiento interesante que el póster original nos hiciera saber lo que descubrió con respecto a los problemas con el bloqueo del servidor. Tengo la sensación de que no tendría nada que ver con esto ... pero es difícil saberlo por la información publicada.

JoGusto
fuente
1

La ejecución de consultas Linq puede generar hilos adicionales. Cuando intento ejecutar un código que usa la colección de consultas Linq en la ventana inmediata, a menudo se niega a ejecutarse porque el depurador no dispone de suficientes subprocesos.

Como han dicho otros, que los hilos salgan cuando están terminados es perfectamente normal.

Tonyb
fuente
-1

También me he enfrentado a este problema y la solución es:

  1. abrir Solución Explorar
  2. haga doble clic en el archivo Program.cs

Agregué este código nuevamente y mi programa se ejecutó con precisión:

Application.Run(new PayrollSystem()); 
//File name this code removed by me accidentally.
shanansari
fuente