"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cuándo y cómo debo deshacerme de una cancelación de CancellationTokenSource?

¿Cuándo y cómo debo deshacerme de una cancelación de CancellationTokenSource?

Publicado el 2025-02-06
Navegar:512

When and How Should I Dispose of a CancellationTokenSource?

Mejor práctica: Correcto de manejo CancellationTokenSource

]] Aunque se puede liberar la clase

CancellationTokenSource , su método de liberación correcto a menudo confunde a los desarrolladores. Este artículo explora en profundidad cuándo y cómo liberar efectivamente dicha especie.

Una de las razones de esta falta es que la clase cancelationTokenSource no tiene un finalizador. Esto significa que el recolector de basura (GC) no puede liberarlo automáticamente. Por lo tanto, se convierte en responsabilidad del desarrollador liberar explícitamente la fuente de tokens.

Sin embargo, los ejemplos proporcionados en MSDN rara vez mencionan la versión. Entonces, ¿cuál es el método recomendado?

de liberación de la estrategia

  1. Use la declaración 'Usando' cuando espera que la tarea complete: Si está esperando que la tarea paralela complete, puede usar la instrucción 'Usando' para envolver el código. Esto asegura que la fuente del token se libere automáticamente después de completar la tarea:

     using (CancellationTokenSource tokenSource = new CancellationTokenSource())
     {
         Task.Run(() => { }, tokenSource.Token);
     }
  2. use continuar y la versión manual: alternativamente, puede registrar un controlador de eventos continuo en la tarea y liberar manualmente la fuente de token en el controlador:

     Task.Run(async () =>
     {
         try
         {
             // 任务代码
         }
         finally
         {
             tokenSource.Dispose();
         }
     }, tokenSource.Token);
  3. Cancelable Plinq Consuly: para la consulta Plinq no shedulada sincronizada, el método recomendado es ejecutar en las operaciones desechar de cancelationTokenSource todas las operaciones.

  4. reutilización y uso múltiple: cancelationTokenSource La instancia no es reutilizable. Deben ser creados y liberados para cada operación de cancelación.

  5. versión directamente: Si no puede usar la instrucción 'Usando' o el controlador de eventos continuo, puede liberar la fuente de token directamente después de que se complete:

     CancellationTokenSource tokenSource = new CancellationTokenSource();
     Task.Run(() => { }, tokenSource.Token);
     // ...
     tokenSource.Dispose();

Resumir

versión CancellationTokenSource La instancia es esencial para evitar fugas de memoria y garantizar la gestión adecuada de los recursos. Siguiendo la estrategia de lanzamiento recomendada, los desarrolladores pueden manejar efectivamente las operaciones de cancelación en su código.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3