Share via


Aviso CA2247: o argumento para o construtor TaskCompletionSource deve ser o valor TaskCreationOptions

A regra do analisador de código CA2247 está habilitada por padrão a partir do .NET 5. Ela produz um aviso de build para chamadas ao construtor TaskCompletionSource<TResult> que passa um argumento do tipo TaskContinuationOptions.

Descrição das alterações

Do .NET 5 em diante, o SDK do .NET inclui Analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas por padrão, incluindo a CA2247. Se o projeto contiver um código que viole essa regra e estiver configurado para tratar avisos como erros, essa alteração poderá interromper o build.

A regra CA2247 encontra chamadas para o construtor TaskCompletionSource<TResult> que passa um argumento do tipo TaskContinuationOptions. O tipo TaskCompletionSource<TResult> tem um construtor que aceita um valor TaskCreationOptions e outro construtor que aceita um Object. Se você passar acidentalmente um valor TaskContinuationOptions em vez de um valor TaskCreationOptions, o construtor com o parâmetroObject será chamado em tempo de execução. O código compilará e executará, mas não terá o comportamento pretendido.

Versão introduzida

5,0

  • Substitua o argumento TaskContinuationOptions pelo valor correspondente TaskCreationOptions. Não suprima esse aviso, pois quase sempre ele destaca um bug no código. Para obter mais informações, consulte CA2247.

  • Para desabilitar completamente a análise de código, defina EnableNETAnalyzers como false no arquivo de projeto. Para obter mais informações, confira EnableNETAnalyzers.

APIs afetadas