2014-05-07 19 views
6

Dato un metodo di annullamento, desidero chiamare un metodo "annulla" su un oggetto che rappresenta un'operazione asincrona quando Annullamento è annullato. È possibile?Come eseguire il codice quando si cancella un annullamento?

Background: Sto interfacciamento con un API che rappresenta un op asincrona seguente modo (più o meno):

class AsyncOp 
{ 
    void Start(Action callback);//returns 'immediately', while beginning an async op. Callback is called when the operation completes. 
    void Cancel();//aborts async operation and calls callback 
} 

posso avvolgere questo in un metodo Task DoAsyncOp() abbastanza facilmente, ma voglio sostenere cancellazione, ad es. Task DoAsyncOp(CancellationToken cancellationToken). Nel mio caso, quando CancelToken viene annullato, chiama Annulla sull'oggetto AsyncOp.

risposta

10

È possibile registrare un Action per essere invocato quando il token viene annullata:

token.Register(() => { /*...*/ }); 
+1

brillante. Non posso credere di non aver notato quel metodo su CancellationToken. – mackenir

+2

Ho lavorato diverse settimane con il mio token finché non l'ho trovato ;-). Se cerchi un evento non vedi il metodo "Registrati" ... – ChrFin

Problemi correlati