Hacer que el método sea sincrónico (IDE0390 e IDE0391)

Propiedad Value
Identificador de la regla IDE0390, IDE0391
Título Hacer que el método sea sincrónico
Category Style
Subcategoría Reglas de código innecesarias (preferencias del modificador)
Idiomas aplicables C#
Options Ninguno

Visión general

Estas reglas marcan async métodos que no contienen ninguna await expresión. Para obtener un mejor rendimiento, elimina el modificador async y ajusta el tipo de retorno, ya que un método async que nunca await nada se ejecuta de forma sincrónica, pero con la sobrecarga que supone la máquina de estados asíncrona.

Las dos reglas tienen como destino escenarios diferentes:

  • IDE0390: notifica async métodos, funciones locales y expresiones lambda que no son implementaciones de interfaz ni invalidaciones.
  • IDE0391: notifica async métodos que implementan un miembro de interfaz o invalidan un método de clase base.

Para evitar que los llamantes pierdan la capacidad de await el método a través de la interfaz, ten cuidado al aplicar la corrección a las implementaciones o sobrescrituras de la interfaz. La eliminación async puede tener diferentes implicaciones de comportamiento en esos casos.

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");
}

Supresión de una advertencia

Si desea suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad a none en el archivo de configuración.

[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none

Para deshabilitar todas las reglas de estilo de código, establezca la gravedad de la categoría Style a none en el archivo de configuración.

[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none

Para obtener más información, consulte Cómo suprimir advertencias de análisis de código.

Consulte también