2012-05-25 21 views
5

Posso uccidere un .NET 4.0 Task object con un metodo come abbiamo potuto con i vecchi e pericolosi Thread.Abort() come discusso nella SO thread (gioco di parole e salvare i gattini!)Uccisione di un'attività .NET 4?

Kenny

+0

elemento duplicato: http://stackoverflow.com/questions/4359910/is-it-possibile-to-aborta-a-task-like-aborting-a-thread-thread-abort-method – Kai

+0

So che è pericoloso ma può essere fatto? Immagino tu stia dicendo di no. – kenny

+0

@kenny Non senza molta conoscenza del 'Task' - Se sapessi, in anticipo, che il' TaskScheduler' utilizzato stava usando un thread dedicato per il 'Task', potresti chiamare' Abort' su quel thread. Detto questo, sarebbe una pessima idea progettare un sistema in questo modo. –

risposta

2

La classe Task è progettato e destinato , per utilizzare il nuovo Cooperative Cancellation model di .NET 4 invece di affidarsi a uno stile di annullamento "annullato" distruttivo.

Non v'è alcun modo diretto per annullare un Task (come Thread.Abort(), anche se questo è molto male da utilizzare in ogni caso), ma c'è un intero framework in atto per fornire l'attrezzatura per request that the Task cancel itself.

+1

Sì, ho visto che CancelationTokenSource e il metodo cooperativo come dovrebbe essere fatto, ma ho un caso in cui ho bisogno di interrompere l'attività (parlando con l'API hardware di terze parti) e sono disposto a diventare instabile per farlo . Grazie ancora!. – kenny

+0

@kenny Non c'è alcun meccanismo in 'Task' per consentire questo. –

+0

Ok grazie, dovrò usare l'oggetto Thread deprecato. – kenny