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é | Value |
|---|---|
| Identificateur de la règle | IDE0390, IDE0391 |
| Titre | Rendre la méthode synchrone |
| Catégorie | Style |
| Sous-catégorie | Règles de code inutiles (préférences de modificateur) |
| Langues applicables | C# |
| Options | None |
Aperçu
Ces règles signalent async les méthodes qui ne contiennent await aucune expression. Pour améliorer les performances, supprimez le modificateur async et ajustez le type de retour, car une méthode async qui n'await jamais quoi que ce soit s’exécute de manière synchrone, mais avec la surcharge de la machine à états asynchrone.
Les deux règles ciblent des scénarios différents :
-
IDE0390 : Signale les méthodes, les fonctions locales et les expressions lambda
asyncqui ne sont pas des implémentations d’interface ni des redéfinitions. -
IDE0391 : signale les
asyncméthodes qui implémentent un membre d’interface ou remplacent une méthode de classe de base.
Pour éviter d’empêcher les appelants d'await la méthode via l’interface, faites preuve de prudence lorsque vous appliquez le correctif aux implémentations de l’interface ou à ses redéfinitions. La suppression async peut avoir des implications comportementales différentes dans ces cas.
Example
// Code with violations.
// IDE0390: Regular method with no 'await'.
public async Task<int> GetValueAsync()
{
return 42;
}
// IDE0391: Override method with no 'await'.
public override async Task<string> GetNameAsync()
{
return "example";
}
// Fixed code.
// Remove 'async' and return the value directly.
public Task<int> GetValueAsync()
{
return Task.FromResult(42);
}
// Remove 'async' and return the value directly.
public override Task<string> GetNameAsync()
{
return Task.FromResult("example");
}
Supprimer un avertissement
Si vous souhaitez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactivez la règle.
#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390
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]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none
Pour désactiver toutes les règles de style de code, définissez la gravité de la catégorie Style sur none dans le fichier de configuration.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements d’analyse du code.