Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
CA2261: Do not use
| Property | Value |
|---|---|
| Rule ID | CA2261 |
| Title | Do not use ConfigureAwaitOptions.SuppressThrowing with Task<TResult> |
| Category | Usage |
| Fix is breaking or non-breaking | Non-breaking |
| Enabled by default in .NET 10 | As warning |
| Applicable languages | C# and Visual Basic |
Cause
A value of ConfigureAwaitOptions.SuppressThrowing is passed to Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Rule description
The ConfigureAwaitOptions.SuppressThrowing option isn't supported by the generic Task<TResult>, since that might lead to returning an invalid TResult. This rule flags the use of SuppressThrowing with Task<TResult> to surface the error at build time rather than runtime.
How to fix violations
Cast the Task<TResult> to a non-generic Task before calling ConfigureAwait(ConfigureAwaitOptions).
Example
The following code snippet shows a violation of CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
The following code snippet shows the fix:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
When to suppress errors
You shouldn't suppress warnings from this rule. If the task is faulted or canceled, TResult will be invalid and cause runtime errors.