共用方式為


CA2261:請勿搭配使用ConfigureAwaitOptions.SuppressThrowingTask<TResult>

屬性
規則識別碼 CA2261
職稱 請勿使用 ConfigureAwaitOptions.SuppressThrowing 搭配 Task<TResult>
類別 使用方式
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 作為警告

原因

的值 ConfigureAwaitOptions.SuppressThrowing 會傳遞至 Task<TResult>.ConfigureAwait(ConfigureAwaitOptions)

檔案描述

ConfigureAwaitOptions.SuppressThrowingTask<TResult>不支援 這個選項,因為這可能會導致傳回無效 TResult的 。 此規則會標幟 使用 SuppressThrowing 搭配 Task<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 將會無效並導致運行時錯誤。