Share via


CA1849: 비동기 메서드에 있을 때 비동기 메서드 호출

속성
규칙 ID CA1849
타이틀 비동기 메서드에서 비동기 메서드 호출
범주 성능
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 아니요

원인

Async 접미사와 동등한 값이 있는 모든 메서드는 Task 반환 메서드에서 호출될 때 이 경고를 생성합니다. 또한 Task.Wait(), Task<T>.Result 또는 Task.GetAwaiter().GetResult()를 호출하면 이 경고가 생성됩니다.

규칙 설명

이미 비동기인 메서드에서 다른 메서드에 대한 호출은 각각의 비동기 버전(있는 경우)에 대한 호출이어야 합니다.

위반 문제를 해결하는 방법

위반:

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

Fix:

메서드의 비동기 버전을 기다립니다.

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

경고를 표시하지 않는 경우

If 조건을 사용하는 동기 및 비동기 코드에 대한 별도의 두 코드 경로가 있는 경우에는 이 규칙에서 경고를 표시하지 않는 것이 안전합니다. 또한 Task가 해결되었는지에 대한 확인이 실행되는 경우 동기화 방법 및 속성을 사용하는 것이 안전합니다.

경고 표시 안 함

단일 위반만 표시하지 않으려면 원본 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 후 다시 사용하도록 설정합니다.

#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

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목