Share via


CA2261: 사용 ConfigureAwaitOptions.SuppressThrowing 안 함 Task<TResult>

속성
규칙 ID CA2261
타이틀 다음으로 사용하지 마세요.ConfigureAwaitOptions.SuppressThrowingTask<TResult>
범주 사용 현황
수정 사항이 주요 변경인지 여부 주요 변경 아님
.NET 8에서 기본적으로 사용 경고로

원인

ConfigureAwaitOptions.SuppressThrowing 이 .에 Task<TResult>.ConfigureAwait(ConfigureAwaitOptions)전달됩니다.

규칙 설명

ConfigureAwaitOptions.SuppressThrowing 옵션은 제네릭 Task<TResult>에서 지원되지 않습니다. 이 경우 잘못된 TResult옵션이 반환될 수 있기 때문에 지원되지 않습니다. 이 규칙은 런타임이 아닌 빌드 시 오류를 표시하는 데 사용하는 SuppressThrowingTask<TResult> 플래그를 지정합니다.

위반 문제를 해결하는 방법

Task<TResult> 를 호출ConfigureAwait(ConfigureAwaitOptions)하기 전에 제네릭 Task 이 아닌 것으로 캐스팅합니다.

예시

다음 코드 조각은 CA2261 위반을 보여줍니다.

Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

다음 코드 조각은 수정 사항을 보여줍니다.

Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);

오류를 표시하지 않는 경우

이 규칙의 경고를 표시하지 않아야 합니다. 작업이 잘못되었거나 취소된 TResult 경우 유효하지 않으며 런타임 오류가 발생합니다.