run method example completed await async c# task async-await async-ctp cancellation-token

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?