Estoy usando un hilo en C# donde establecí la propiedad IsBackground en verdadero. El hilo ejecuta algún código en un bucle hasta que la aplicación se cierra. Cuando la aplicación se cierra, el subproceso también deja de ejecutarse (porque he configurado IsBackground = true).¿Puedo detectar cuándo un subproceso en segundo plano es eliminado por la aplicación cuando se cierra la aplicación?
¿Cómo mata la aplicación el hilo? Parece que no lo hace al llamar a abortar porque no obtengo una excepción ThreadAbortException. ¿Sucede detrás de escena? Me gustaría hacer algo de retroceso en mi bloque final del ciclo.
Sé que podría simplemente llamar a abortar en el hilo, pero quiero saber cómo la aplicación cierra mi hilo de fondo y si puedo reaccionar desde dentro del hilo. Sé que puedo suscribirme al evento Application.ApplicationExit, pero estoy ejecutando este código tanto en un servicio como en un winform y preferiría capturar una excepción dentro del ciclo, así puedo revertir en la declaración finally.
Puede hacer que sea un hilo de primer plano y crear un escenario de cierre de aplicación 'global' que cierre manualmente el hilo. – CodingBarfield
¿Ha mirado el evento [AppDomain.ProcessExit] (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx)? – Botz3000
¿Entonces ambos dicen que sucede detrás de escena y que no puedo reaccionar sino crear este tipo de soluciones personalizadas? –