c# - method - Acción de cancelación de cancelación de registro
task run async c# (2)
No hay manera de realmente deshacer un registro. Mientras que el método de eliminación eliminará la devolución de llamada, el token aún contiene la información de que hay un registro:
var cancellationTokenSource = new CancellationTokenSource();
basicTask = Task.Factory.StartNew(() => {
for (;;) {
var z = DateTime.Today.ToString();
}
}, cancellationTokenSource.Token);
var basicTask2 = Task.Factory.StartNew(() => {
for (;;) {
var z = DateTime.Today.ToString();
}
}, cancellationTokenSource.Token);
//var usingThisCodeWillResultInADeadlock = cancellationTokenSource.Token.Register(() => { });
//usingThisCodeWillResultInADeadlock.Dispose();
cancellationTokenSource.Cancel();
basicTask.Wait();
Deshabilitar los comentarios resultará en un punto muerto.
Tengo un token para varias tareas y necesito administrar mejor su cancelación, para recibir una notificación de una cancelación que puedo usar
token.Register(RegisterMethod);
¿Cómo puedo eliminar esta "suscripción"? ¿Hay alguna manera de "cancelar el registro"?
Pensé en hacer una solución con TaskCompletionSource. Pero no sé si funcionaría bien. ¿Cuál es la mejor manera de resolver este enfoque?
CancellationToken.Register
devuelve una instancia de CancellationTokenRegistration
. Si llama a Dispose
en esa instancia, se eliminará su registro.