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
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);
}
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);
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.
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.
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.
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