En realidad, no parece haber mucha explicación sobre este tema, 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 forma segura, mientras que cualquier otra cosa tiende a significar que no lo hizo. no sale como se esperaba. Pero luego, este código de salida se puede configurar en código por usted mismo para pasarlo por alto por completo.
El enlace más cercano que pude encontrar útil para obtener más información es este
Cita del enlace anterior:
Cualquiera que sea el método de salida, el número entero que devuelve de su proceso o subproceso debe ser valores de 0-255 (8 bits). Un valor cero indica éxito, mientras que un valor distinto de cero indica fracaso. Aunque puede intentar devolver cualquier valor entero como 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 programas por lotes / shell que ejecutan condicionalmente otros programas dependiendo del éxito o fracaso de uno.
De la documentación de GetEXitCodeThread
Importante La función GetSalirCodeThread 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 código de error. Si un subproceso devuelve STILL_ACTIVE (259) como un código de error, las aplicaciones que prueban este valor podrían interpretar que significa que el subproceso todavía se está ejecutando y continúan probando la finalización del subproceso después de que el subproceso haya terminado, lo que podría poner el aplicación en un bucle infinito.
Entiendo 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 subprocesos al mismo tiempo que tienen una dependencia entre sí. Si es necesario que una fuente externa lea este código de error, puede configurarlo para que otras aplicaciones conozcan el estado de su hilo.
RunAsync().Wait();
static void Main(string[] args) { var t = new Task<object>(() => SomeOp(2)); t.Start(); t.Wait(); }
La cuestión es que las tareas se ejecutan mediante subprocesos del grupo de subprocesos y, según la heurística del grupo de subprocesos, es posible que no finalice el subproceso incluso después de que la tarea haya finalizado. El hilo simplemente regresa al grupo de hilos esperando ser asignado con la siguiente tarea. Y es por eso que el código de salida STILL_ACTIVE (259) suena tan intuitivo aquí.Como mencionó Sayse, 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 de servicio web (ya que todavía está escuchando más llamadas).
fuente
lo que me pasó es que tengo varios proyectos en mi solución. Quería depurar el proyecto 1, sin embargo, el proyecto 2 se estableció como el proyecto inicial predeterminado. Arreglé esto, haga clic derecho en el proyecto y seleccione "Establecer como proyecto de inicio", luego ejecutar la depuración está bien.
fuente