Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
| Property | Value |
|---|---|
| Идентификатор правила | IDE0390, IDE0391 |
| Заголовок | Сделать метод синхронным |
| Категория | Style |
| Подкатегории | Ненужные правила кода (параметры модификатора) |
| Применимые языки | C# |
| Параметры | Нет |
Обзор
Эти правила помечают async методы, которые не содержат await выражений. Для повышения производительности удалите модификатор async и измените возвращаемый тип, так как метод async, который никогда ничего не await, выполняется синхронно, но с накладными расходами на машину состояний async.
Два правила предназначены для разных сценариев:
-
IDE0390: сообщает
asyncметоды, локальные функции и лямбда-выражения, которые не являются реализациями интерфейса или переопределениями. -
IDE0391: Сообщает о
asyncметодах, реализующих член интерфейса или переопределяющих метод базового класса.
Чтобы не нарушить возможность вызывающего кода await вызывать метод через интерфейс, соблюдайте осторожность при применении исправления к реализациям интерфейсов или переопределениям. Удаление async может иметь различные последствия для поведения в этих случаях.
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");
}
Отключение предупреждений
Если вы хотите отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable IDE0390
// The code that's violating the rule is on this line.
#pragma warning restore IDE0390
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.cs]
dotnet_diagnostic.IDE0390.severity = none
dotnet_diagnostic.IDE0391.severity = none
Чтобы отключить все правила стиля кода, задайте уровень серьезности для категории Stylenone в файле конфигурации.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".