2012-05-25 13 views
5

¿Puedo matar a un .NET 4.0 Task object con algún método como el que pudimos con los viejos y peligrosos Thread.Abort() como se discute en la SO thread (juego de palabras y salvar a los gatitos!)Asesinato de una tarea .NET 4?

Kenny

+0

ítem duplicado: http://stackoverflow.com/questions/4359910/is-it-possible-to-abort-a-task-like-aborting-a-thread-thread-abort-method – Kai

+0

Sé que es peligroso , ¿Pero, puede hacerse? Supongo que estás diciendo que no. – kenny

+0

@kenny No sin muchos conocimientos sobre la 'Tarea' - Si sabías, de antemano, que el' TaskScheduler' que se usaba usaba un hilo dedicado para la 'Tarea', podías llamar' Abort' en ese hilo. Dicho esto, sería una muy mala idea diseñar un sistema de esa manera. –

Respuesta

2

La clase Task está diseñado y destinado , para usar el nuevo Cooperative Cancellation model de .NET 4 en lugar de confiar en un estilo de cancelación destructivo "abortar".

No hay manera directa a cancelar una Task (como Thread.Abort(), aunque eso es muy malo utilizar en cualquier caso), pero no hay un marco entero en lugar de proporcionar las herramientas para request that the Task cancel itself.

+1

Sí, he visto que CancelationTokenSource y el método cooperativo de cómo se debe hacer, pero tengo un caso en el que tengo que cancelar la tarea (hablar con una API de hardware de terceros) y estoy dispuesto a hacerlo inestable para hacerlo . ¡Gracias de nuevo!. – kenny

+0

@kenny No hay ningún mecanismo en 'Tarea' para permitir esto. –

+0

Ok gracias, tendré que usar el objeto Thread obsoleto. – kenny