CA1849 : appeler des méthodes asynchrones dans une méthode asynchrone

Propriété Value
Identificateur de la règle CA1849
Titre Appeler des méthodes async dans une méthode async
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Non

Cause

Toutes les méthodes dont il existe un équivalent avec suffixe asynchrone produisent cet avertissement lorsqu’elles sont appelées à partir d’une méthode retournant une Task. Les méthodes Task.Wait(), Task<T>.Result et Task.GetAwaiter().GetResult() génèrent également cet avertissement lorsqu’elles sont appelées.

Description de la règle

Dans une méthode déjà asynchrone, les appels d’autres méthodes doivent être à leurs versions asynchrones, là où elles existent.

Comment corriger les violations

Violation :

Task DoAsync()
{
    file.Read(buffer, 0, 10);
}

Correctif :

Attendez la version asynchrone de la méthode :

async Task DoAsync()
{
    await file.ReadAsync(buffer, 0, 10);
}

Quand supprimer les avertissements

Vous pouvez sans risque supprimer un avertissement de cette règle dans le cas où il existe deux chemins du code distincts pour le code synchrone et le code asynchrone, en utilisant une condition if. En outre, s’il existe une vérification permettant de déterminer si la Task a été résolue, vous pouvez sans risque utiliser des méthodes et des propriétés synchrones.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA1849
// The code that's violating the rule is on this line.
#pragma warning restore CA1849

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Voir aussi