Me pregunto si la nueva clase Task en dot.net 4 está creando un hilo de fondo o de primer plano.
Normalmente, establecería "IsBackground" en un hilo, pero no existe tal atributo en una tarea.
No he podido encontrar ninguna documentación de esto en MSDN :-(
Si está comenzando a
Task<T>
usarTask.Run()
, entonces sí.Si está usando
async
yawait
, entonces no. Extracto de aquí :"Las palabras clave async y await no hacen que se creen subprocesos adicionales. Los métodos asincrónicos no requieren subprocesos múltiples porque un método asíncrono no se ejecuta en su propio subproceso. El método se ejecuta en el contexto de sincronización actual y usa el tiempo en el subproceso solo cuando el método está activo. Puede usar Task.Run para mover el trabajo vinculado a la CPU a un subproceso en segundo plano, pero un subproceso en segundo plano no ayuda con un proceso que solo espera que los resultados estén disponibles ".
fuente
Parece que se ejecuta como un hilo de fondo.
Ver este hilo:
Ejecución de varias tareas asincrónicas de C #
fuente
Las tareas son ejecutadas por subprocesos que provienen del grupo de subprocesos del sistema. Un hilo que proviene del grupo de hilos se ejecuta en segundo plano de forma predeterminada.
fuente
Si aún no está convencido de una tarea en segundo plano, intente acceder a un elemento de la GUI desde una Tarea como:
public async Task<int> ProcessStuff_Async() { while(true) { label1.Text = "processing next item";
para obtener la excepción de tiempo de ejecución:
al igual que con los viejos hilos de fondo regulares.
Hay información en los documentos de MSDN (a partir de 2017 :-), por ejemplo:
Este documento incluso tiene una sección
What happens under the covers
.fuente