"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando e como devo descartar um cancelamentoTokensource?

Quando e como devo descartar um cancelamentoTokensource?

Postado em 2025-02-06
Navegar:510

When and How Should I Dispose of a CancellationTokenSource?

prática recomendada: Handlation cancelationtokensource

] Embora a classe

cancelationTokensource possa ser lançada, seu método de liberação correto geralmente confunde desenvolvedores. Este artigo explora profundamente quando e como liberar efetivamente essa espécie.

Uma das razões para essa não -clara é que a classe cancelationTokenSource não possui um finalizador. Isso significa que o coletor de lixo (GC) não pode liberá -lo automaticamente. Portanto, torna -se responsabilidade do desenvolvedor liberar explicitamente a fonte do token.

No entanto, os exemplos fornecidos no MSDN raramente mencionam a versão. Então, qual é o método recomendado?

Libere a estratégia

  1. use a instrução 'Usando' ao aguardar a tarefa concluir: Se você estiver esperando a tarefa paralela concluir, poderá usar a instrução 'Usando' para envolver o código. Isso garante que a fonte do token seja liberada automaticamente após a conclusão da tarefa:

     using (CancellationTokenSource tokenSource = new CancellationTokenSource())
     {
         Task.Run(() => { }, tokenSource.Token);
     }
  2. use Continuewith and Manual Release: Como alternativa, você pode registrar um manipulador de eventos Continuar com a tarefa e liberar manualmente a fonte de token no manipulador:

     Task.Run(async () =>
     {
         try
         {
             // 任务代码
         }
         finally
         {
             tokenSource.Dispose();
         }
     }, tokenSource.Token);
  3. consulta Plinq cancelável: Para consulta Plinq não sincronizada não sincronizada, o método recomendado é executar na dispõe Handler de eventos de cancellationTokensource All Operation.

  4. reutilização e uso múltiplo: cancelationTokensource a instância não é reutilizada. Eles devem ser criados e liberados para cada operação de cancelamento.

  5. Libere diretamente: Se você não puder usar a instrução 'Usando' ou o manipulador de eventos Continuar, poderá liberar a fonte do token diretamente após a conclusão:

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

Resumir

release cancelationTokensource A instância é essencial para evitar vazamentos de memória e garantir o gerenciamento adequado de recursos. Seguindo a estratégia de liberação recomendada, os desenvolvedores podem lidar efetivamente a operações de cancelamento em seu código.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3