c# - example - Cómo cancelar un CancelaciónToken
remarks c# (3)
Comienzo una tarea, que inicia otras tareas y así sucesivamente.
Dado ese árbol, si alguna tarea falla, el resultado de toda la operación es inútil. Estoy considerando usar tokens de cancelación. Para mi sorpresa, el token no tiene un método "CancelThisToken ()" ...
Así que mi pregunta es: ¿cómo puedo, en posesión de SOLAMENTE un CancellationToken , cancelarlo?
Como indica el estado de los documentos, debe llamar al método de cancelación desde el objeto de origen. El código de ejemplo se incluye en el enlace que proporcionó. Aquí están las secciones relevantes:
// Define the cancellation token.
CancellationTokenSource source = new CancellationTokenSource();
previouslyProvidedToken = source.Token;
...
source.Cancel();
¿Cómo puedo, en posesión de SOLAMENTE un Cancelado Hablado, cancelarlo?
Sin una referencia a la fuente, no puede cancelar un token. Eso no significa que necesites el CancelTokenSource que primero generó el token. Cuando se le entrega un token, puede crear una nueva instancia de la fuente del token, asignarle su token al token proporcionado y cancelarlo. Todas las demás partes que pueden leer este token verán que se ha solicitado su cancelación.
Como una extensión de las respuestas proporcionadas hasta el momento, si desea que se le proporcione a sus métodos una instancia CancellationToken
y que se cancele internamente, debe examinar CancellationTokenSource.CreateLinkedTokenSource
. En esencia, esto se cancelará cuando se cts.Cancel()
, o cuando se llame a uno de sus tokens.
Genere instancias CancelaciónToken desde una instancia CancelaciónTokenSource y llame a Cancelar en la instancia CTS.
Ejemplo: https://msdn.microsoft.com/en-us/library/dd321955(v=vs.110).aspx
También hay una forma de cancelar los subprocesos sin que se activen las excepciones, solo compruebe el CT para IsCancellationRequested y maneje el caso usted mismo. Más información: ¿ Uso de la propiedad IsCancellationRequested?