Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
| Propriété | Valeur |
|---|---|
| Identificateur de la règle | CA1849 |
| Titre | Appelez des méthodes asynchrones lorsque vous êtes dans une méthode asynchrone. |
| Catégorie | Performance |
| Le correctif a un effet disruptif ou non disruptif | Sans rupture |
| Activé par défaut dans .NET 10 | Non |
| Langues applicables | C# et Visual Basic |
Cause
Toutes les méthodes pour lesquelles il existe un équivalent suffixé par Async produiront cet avertissement lorsqu'elles sont appelées depuis 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.