Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | 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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.