Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
| 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
asyncmétodos, funciones locales y expresiones lambda que no son implementaciones de interfaz ni invalidaciones. -
IDE0391: notifica
asyncmé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.