Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Propriedade | Valor |
---|---|
ID da regra | CA2025 |
Título | Não passe instâncias 'IDisposable' para tarefas não esperadas |
Categoria | Fiabilidade |
A correção é invasiva ou não invasiva | Inquebrável |
Ativado por padrão no .NET 10 | Não |
Motivo
Uma IDisposable
instância é passada para uma tarefa não esperada e potencialmente descartada antes que a tarefa seja concluída usando a instância.
Descrição da regra
As tarefas não esperadas que usam IDisposable
instâncias podem usá-las muito depois de terem sido descartadas. Certifique-se de que as tarefas que usam essas instâncias estão concluídas antes de as instâncias serem descartadas.
Exemplos
Os seguintes trechos de código (e seus equivalentes do Visual Basic) são violações do CA2025:
public Task DoSomethingAsync()
{
// Using statements and using blocks can both be violations.
using (var disposable = new DisposableThing())
{
return DoSomethingInternalAsync(disposable);
}
}
public async Task DoThingsAsync()
{
var disposable = new DisposableThing();
var task = DoSomethingInternalAsync(disposable);
// More code here.
dispose.Dispose();
// It's a violation if arguments are disposed before the task is awaited.
await task.ConfigureAwait(false);
}
Quando suprimir avisos
Suprima esses avisos se souber que as tarefas terminam de usar IDisposable
instâncias antes de serem descartadas.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração .
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.