2009-08-25 23 views
9

¿Cuál es la diferencia entre un fondo y un hilo de primer plano?En CLR, ¿cuál es la diferencia entre un fondo y un hilo de primer plano?

+0

Aclaración: C# no tiene ningún concepto de fondo y de temas en primer plano. Las distinciones que hacen ciertos escenarios sobre un hilo se realizan a nivel CLR/COM. – JaredPar

+5

C# tampoco tiene el concepto de Jirafa, pero puedes hacer una clase con una propiedad llamada Jirafa. IsBackground es una propiedad de un objeto en el marco. Recuerde, C# _el idioma_ no es el framework .NET. Es solo un lenguaje de programación. –

Respuesta

20

De MSDN:

hilos de fondo son idénticos a hilos de primer plano con una excepción: un subproceso de fondo no mantiene el entorno de ejecución administrado que ejecuta.

+0

Quiere decir que no puede evitar que un proceso actual termine ... – Guffa

+0

@Guffa: No entiendo. ¿Estás objetando una interpretación de la documentación de MSDN? – Amy

+0

¿No tiene una prioridad de conmutación de contexto menor también? –

15

Ver this page:

  • hilos de primer plano tienen la capacidad de evitar la aplicación actual de la terminación. El CLR no cerrará una aplicación (es decir, descargará el AppDomain de alojamiento) hasta que todos los hilos de primer plano hayan finalizado.

  • Los subprocesos de fondo (a veces denominados subprocesos de daemon) son vistos por el CLR como rutas de ejecución prescindibles que pueden ignorarse en cualquier momento (incluso si están trabajando en alguna unidad de trabajo). Por lo tanto, si todos los subprocesos de primer plano han terminado, todos los subprocesos de fondo se eliminan automáticamente cuando se descarga el dominio de la aplicación.

+0

cuando las personas deberían usar hilo de fondo ..... da un buen ejemplo. – Mou

4

Por defecto, los hilos son hilos de primer plano, lo que significa que mantienen la solicitud vida durante tanto tiempo como cualquier uno de ellos está en funcionamiento. C# también admite subprocesos de fondo, que no mantienen viva la aplicación por sí solos, finalizando inmediatamente una vez que todos los subprocesos de primer plano hayan terminado.

0

Si termina cualquiera de los hilos de primer plano o de fondo, la aplicación muere inmediatamente. Es posible cambiar el hilo de primer plano a fondo y viceversa en cualquier momento durante la vida útil de la aplicación. CLR crea dos tipos de subprocesos para admitir mejor AppDomain. CLR terminará por la fuerza cualquier subproceso de fondo que se esté ejecutando si el subproceso en primer plano finaliza. Cualquier subproceso creado por código nativo que ingrese al entorno de ejecución administrado se marca como subprocesos de fondo.

Cuestiones relacionadas