¿Se considera aceptable no llamar a Dispose () en un objeto de tarea TPL?

Quiero activar una tarea para que se ejecute en un hilo de fondo. No quiero esperar a que se completen las tareas.

En .net 3.5 hubiera hecho esto:

ThreadPool.QueueUserWorkItem(d => { DoSomething(); });

En .net 4, el TPL es la forma sugerida. El patrón común que he visto recomendado es:

Task.Factory.StartNew(() => { DoSomething(); });

sin embargo, elStartNew() El método devuelve unTask objeto que implementaIDisposable. Esto parece ser pasado por alto por las personas que recomiendan este patrón. La documentación de MSDN en elTask.Dispose() el método dice:

"Siempre llame a Eliminar antes de liberar su última referencia a la Tarea".

No puede invocar la disposición en una tarea hasta que se complete, por lo que, en primer lugar, hacer que el subproceso principal espere y la eliminación de la llamada anularía el punto de hacerlo en un subproceso en segundo plano. Tampoco parece haber ningún evento completado / terminado que pueda usarse para la limpieza.

La página de MSDN en la clase Tarea no comenta sobre esto, y el libro "Pro C # 2010 ..." recomienda el mismo patrón y no hace ningún comentario sobre la eliminación de tareas.

Sé que si lo dejo, el finalizador lo atrapará al final, pero ¿volverá esto y me morderá cuando estoy haciendo mucho fuego y olvido tareas como esta y el hilo del finalizador se abruma?

Entonces mis preguntas son:

¿Es aceptable no llamar?Dispose() sobre elTask clase en este caso? Y si es así, ¿por qué hay riesgos / consecuencias?¿Hay alguna documentación que discuta esto?¿O hay una manera apropiada de deshacerse de laTask objeto que me he perdido?¿O hay otra forma de disparar y olvidar tareas con el TPL?

Respuestas a la pregunta(3)

Su respuesta a la pregunta