Share via


CA2012: ValueTasks를 올바르게 사용

속성
규칙 ID CA2012
타이틀 ValueTasks를 올바르게 사용하세요.
범주 신뢰성
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 제안 사항

원인

멤버 호출에서 반환되는 ValueTask 인스턴스가 예외, 손상 또는 성능 저하를 발생시킬 수 있는 방식으로 사용됩니다.

규칙 설명

멤버 호출에서 반환되는 ValueTask 인스턴스는 직접 대기되도록 되어 있습니다. ValueTask를 여러 번 사용하거나 완료가 확인되기 전에 해당 결과에 직접 액세스하면 예외나 손상이 발생할 수 있습니다. 이러한 ValueTask를 무시하면 기능 버그가 발생하거나 성능이 저하될 수 있습니다.

위반 문제를 해결하는 방법

일반적으로 ValueTasks는 지역 변수나 필드와 같은 다른 위치에 저장되거나 삭제되지 않고 직접 대기되어야 합니다.

경고를 표시하지 않는 경우

임의의 멤버 호출에서 반환된 개체의 경우 ValueTask 호출자는 한 번만 사용해야 한다고 가정 ValueTask 해야 합니다(예: 대기). 그러나 개발자가 호출되는 멤버를 제어하고 해당 구현에 대한 완전한 지식을 가지고 있는 경우 개발자는 반환 ValueTask 이 항상 개체를 래핑 Task 하는 경우 경고가 표시되지 않도록 하는 것이 안전하다는 것을 알 수 있습니다.

경고 표시 안 함

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

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

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 구성 파일에서 심각도를 none으로 설정합니다.

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

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

참고 항목