2011-05-27 12 views
5

La documentación de MSDN indica que los hilos iniciados por el TPL disfrutarán de una mejor programación. Sin embargo, dado que los hilos se basan en ThreadPool, se implementarán como hilos de fondo.¿Los subprocesos iniciados por la Biblioteca paralela de tareas actúan como subprocesos de primer plano?

Ahora, hay algunas tareas que me gustaría realizar en paralelo, pero es imprescindible que estas tareas se lleven a cabo hasta su finalización.

Entonces, ¿cómo creo esas tareas que son esencialmente hilos de primer plano, pero aún disfrutan de la programación mejorada proporcionada por el TPL?

+0

¿Puede describir el escenario un poco más? ¿Son trabajos de fuego y olvido totalmente independientes? –

Respuesta

4

El TPL realmente no le da hilos, le permite crear tareas. Las tareas se pueden ejecutar en diferentes subprocesos, por lo que Tarea! = Subproceso.

Al igual que con el Threadpool normal, no sería una buena idea cambiar las propiedades de subprocesos.

Pero su problema podría resolverse fácilmente Esperando las tareas pendientes del hilo principal. Por lo general, también quiere capturar y manejar sus excepciones.

+0

Gracias! Ahora solo creo un hilo trivial que no es de fondo y que espera a que todas las tareas mueran. Aceptando tu respuesta. – pepoluan

7

Puede escribir su propia implementación TaskScheduler. Eche un vistazo en el samples para ver ejemplos de la implementación de un TaskScheduler - con suerte, es relativamente simple a partir de ahí.

+0

Nice Samples link. – radbyx

+0

Ese enlace ahora está roto. Creo que esto es equivalente: https://code.msdn.microsoft.com/ParExtSamples – Holf

+0

@Holf: Gracias, corregido. –

0

La propiedad IsBackgroundpuede asignarse a. No estoy seguro si esto está "bien" o "no-pantalones-en-cabeza-tonto" sin embargo.

Happy coding.

0

Es imperativo que estas tareas sean llevadas a cabo hasta su finalización.

Supongo que quiere decir que quiere asegurarse de que esas tareas se completen incluso si se cierra el hilo primario.

No recomendaría dependiendo de que el hilo de primer plano permanezca activo si el hilo principal se apaga. En circunstancias normales, puede mantener el hilo principal activo, esperando a que las tareas se completen. También puede escribir un controlador que pueda atrapar las excepciones no controladas y hacer un apagado correcto, que incluye esperar a que se completen las tareas. Si algo escapa a su trampa de excepciones no controladas, entonces su proceso probablemente es tan corrupto que no debe confiar en los resultados que entreguen las tareas.

Y, por supuesto, nada de lo que hagas evitará que un usuario cierre los hilos usando el Administrador de tareas o algo similar.

Cuestiones relacionadas