# CancellationToken Estructura

## Definición

Propaga una notificación de que las operaciones deben cancelarse.Propagates notification that operations should be canceled.

``public value class CancellationToken``
``````[System.Runtime.InteropServices.ComVisible(false)]
public struct CancellationToken``````
``type CancellationToken = struct``
``Public Structure CancellationToken``
Herencia
CancellationToken
Atributos

## Ejemplos

En el ejemplo siguiente se utiliza un generador de números aleatorios para emular una aplicación de recopilación de datos que lee 10 valores enteros de once instrumentos diferentes.The following example uses a random number generator to emulate a data collection application that reads 10 integral values from eleven different instruments. Un valor de cero indica que se ha producido un error en la medida para un instrumento, en cuyo caso se debe cancelar la operación y no se debe calcular la media global.A value of zero indicates that the measurement has failed for one instrument, in which case the operation should be cancelled and no overall mean should be computed.

``````using System;
using System.Collections.Generic;

public class Example
{
public static void Main()
{
// Define the cancellation token.
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;

Random rnd = new Random();
Object lockObj = new Object();

int iteration = taskCtr + 1;
int value;
int[] values = new int[10];
for (int ctr = 1; ctr <= 10; ctr++) {
lock (lockObj) {
value = rnd.Next(0,101);
}
if (value == 0) {
source.Cancel();
break;
}
values[ctr-1] = value;
}
return values;
}, token));

}
try {
(results) => {
Console.WriteLine("Calculating overall mean...");
long sum = 0;
int n = 0;
foreach (var t in results) {
foreach (var r in t.Result) {
sum += r;
n++;
}
}
return sum/(double) n;
} , token);
}
catch (AggregateException ae) {
foreach (Exception e in ae.InnerExceptions) {
Console.WriteLine("Unable to compute mean: {0}",
else
Console.WriteLine("Exception: " + e.GetType().Name);
}
}
finally {
source.Dispose();
}
}
}
// Repeated execution of the example produces output like the following:
//       Unable to compute mean: A task was canceled.
//
//       Unable to compute mean: A task was canceled.
//
//       Calculating overall mean...
//       The mean is 5.29545454545455.
//
//       Unable to compute mean: A task was canceled.
//
//       Unable to compute mean: A task was canceled.
//
//       Unable to compute mean: A task was canceled.
//
//       Calculating overall mean...
//       The mean is 4.97363636363636.
//
//       Unable to compute mean: A task was canceled.
//
//       Unable to compute mean: A task was canceled.
//
//       Unable to compute mean: A task was canceled.
//
//       Calculating overall mean...
//       The mean is 4.86545454545455.
``````
``````Imports System.Collections.Generic

Module Example
Public Sub Main()
' Define the cancellation token.
Dim source As New CancellationTokenSource()
Dim token As CancellationToken = source.Token

Dim lockObj As New Object()
Dim rnd As New Random

For taskCtr As Integer = 0 To 10
Dim iteration As Integer = taskCtr + 1
Dim value, values(9) As Integer
For ctr As Integer = 1 To 10
SyncLock lockObj
value = rnd.Next(0,101)
End SyncLock
If value = 0 Then
source.Cancel
Exit For
End If
values(ctr-1) = value
Next
Return values
End Function, token))

Next
Try
Function(results)
Console.WriteLine("Calculating overall mean...")
Dim sum As Long
Dim n As Integer
For Each t In results
For Each r In t.Result
sum += r
n+= 1
Next
Next
Return sum/n
End Function, token)
Catch ae As AggregateException
For Each e In ae.InnerExceptions
Console.WriteLine("Unable to compute mean: {0}",
Else
Console.WriteLine("Exception: " + e.GetType().Name)
End If
Next
Finally
source.Dispose()
End Try
End Sub
End Module
' Repeated execution of the example produces output like the following:
'       Unable to compute mean: A task was canceled.
'
'       Unable to compute mean: A task was canceled.
'
'       Calculating overall mean...
'       The mean is 5.29545454545455.
'
'       Unable to compute mean: A task was canceled.
'
'       Unable to compute mean: A task was canceled.
'
'       Unable to compute mean: A task was canceled.
'
'       Calculating overall mean...
'       The mean is 4.97363636363636.
'
'       Unable to compute mean: A task was canceled.
'
'       Unable to compute mean: A task was canceled.
'
'       Unable to compute mean: A task was canceled.
'
'       Calculating overall mean...
'       The mean is 4.86545454545455.
``````

## Comentarios

Un CancellationToken permite la cancelación cooperativa entre subprocesos, elementos de trabajo del grupo de subprocesos u objetos Task.A CancellationToken enables cooperative cancellation between threads, thread pool work items, or Task objects. Para crear un token de cancelación, cree una instancia de un objeto CancellationTokenSource, que administra los tokens de cancelación recuperados de su propiedad CancellationTokenSource.Token.You create a cancellation token by instantiating a CancellationTokenSource object, which manages cancellation tokens retrieved from its CancellationTokenSource.Token property. A continuación, se pasa el token de cancelación a cualquier número de subprocesos, tareas u operaciones que deben recibir un aviso de cancelación.You then pass the cancellation token to any number of threads, tasks, or operations that should receive notice of cancellation. El token no se puede usar para iniciar la cancelación.The token cannot be used to initiate cancellation. Cuando el objeto propietario llama a CancellationTokenSource.Cancel, la propiedad IsCancellationRequested de cada copia del token de cancelación se establece en `true`.When the owning object calls CancellationTokenSource.Cancel, the IsCancellationRequested property on every copy of the cancellation token is set to `true`. Los objetos que reciben la notificación pueden responder de la manera adecuada.The objects that receive the notification can respond in whatever manner is appropriate.

## Constructores

 Inicializa el CancellationToken.Initializes the CancellationToken.

 Obtiene si este token es capaz de existir en el estado cancelado.Gets whether this token is capable of being in the canceled state. Obtiene si se ha solicitado la cancelación para este token.Gets whether cancellation has been requested for this token. Devuelve un valor CancellationToken vacío.Returns an empty CancellationToken value. Obtiene un WaitHandle que se señala cuando el token se cancela.Gets a WaitHandle that is signaled when the token is canceled.

## Métodos

 Determina si la instancia de CancellationToken actual es igual que el token especificado.Determines whether the current CancellationToken instance is equal to the specified token. Determina si la instancia de CancellationToken actual es igual que la instancia de Object especificada.Determines whether the current CancellationToken instance is equal to the specified Object. Sirve como función hash de un objeto CancellationToken.Serves as a hash function for a CancellationToken. Registra un delegado que se invocará cuando se cancele este objeto CancellationToken .Registers a delegate that will be called when this CancellationToken is canceled. Registra un delegado que se invocará cuando se cancele este objeto CancellationToken .Registers a delegate that will be called when this CancellationToken is canceled. Registra un delegado que se invocará cuando se cancele este objeto CancellationToken .Registers a delegate that will be called when this CancellationToken is canceled. Registra un delegado que se invocará cuando se cancele este objeto CancellationToken .Registers a delegate that will be called when this CancellationToken is canceled. Produce OperationCanceledException si este token ha tenido una solicitud de cancelación.Throws a OperationCanceledException if this token has had cancellation requested. Registra un delegado que se invoca cuando se cancela este objeto CancellationToken.Registers a delegate that is called when this CancellationToken is canceled.