Бөлісу құралы:


CA1849: Вызывайте асинхронные методы, когда вы находитесь в асинхронном методе

Свойство Значение
Идентификатор правила CA1849
Заголовок Вызов асинхронных методов при использовании асинхронного метода
Категория Производительность
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Все методы, для которых существует эквивалент с суффиксом async, выдают это предупреждение при вызове из метода, возвращающего задачу. Кроме того, это предупреждение возникает при вызове Task.Wait(), Task<T>.Result или Task.GetAwaiter().GetResult().

Описание правила

В методе, который уже является асинхронным, вызовы других методов должны соответствовать их асинхронным версиям, если они существуют.

Устранение нарушений

Нарушение:

Task DoAsync()
{
    file.Read(buffer, 0, 10);
}

Исправление:

Ожидать асинхронную версию метода:

async Task DoAsync()
{
    await file.ReadAsync(buffer, 0, 10);
}

Когда лучше отключить предупреждения

Можно безопасно отключить предупреждение этого правила, если существуют два отдельных пути для синхронного и асинхронного кода с использованием условия if. Кроме того, если проводится проверка разрешения задачи, можно использовать методы и свойства синхронизации.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

См. также