No ConfigureAwaitOptions.SuppressThrowing with Task<T>

This product is not supported for your selected Datadog site. ().
이 페이지는 아직 영어로 제공되지 않습니다. 번역 작업 중입니다.
현재 번역 프로젝트에 대한 질문이나 피드백이 있으신 경우 언제든지 연락주시기 바랍니다.

Metadata

ID: csharp-best-practices/task-suppress-throwing

Language: C#

Severity: Notice

Category: Best Practices

Description

This rule prohibits using ConfigureAwaitOptions.SuppressThrowing directly on instances of Task<T>. The SuppressThrowing option is intended to be applied only on non-generic Task objects. Applying it on Task<T> can lead to unexpected behavior or runtime issues because Task<T> handles exceptions differently.

To comply with this rule, explicitly cast Task<T> instances to Task before calling ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing). For example: ((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);. This approach ensures the suppress throwing option is applied correctly without affecting the generic task’s exception handling.

Non-Compliant Code Examples

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

Compliant Code Examples

Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

원활한 통합. Datadog Code Security를 경험해 보세요