CA2261: ile kullanmayın ConfigureAwaitOptions.SuppressThrowingTask<TResult>

Özellik Değer
Kural Kimliği CA2261
Başlık ile kullanmayın ConfigureAwaitOptions.SuppressThrowingTask<TResult>
Kategori Kullanım
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Uyarı olarak

Neden

değerine ConfigureAwaitOptions.SuppressThrowing geçirilir Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).

Kural açıklaması

Bu ConfigureAwaitOptions.SuppressThrowing seçenek genel Task<TResult>tarafından desteklenmez çünkü bu geçersiz TResultbir döndürülmesine neden olabilir. Bu kural, çalıştırma zamanı yerine derleme zamanında hatayı ortaya çıkarabilmek için ile Task<TResult> kullanımını SuppressThrowing işaretler.

İhlalleri düzeltme

çağrısından önce öğesini Task<TResult> genel Task olmayan bir değere yayınlar ConfigureAwait(ConfigureAwaitOptions).

Örnek

Aşağıdaki kod parçacığı CA2261 ihlalini gösterir:

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

Aşağıdaki kod parçacığı düzeltmeyi gösterir:

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

Hatalar ne zaman gizlenecek?

Bu kuraldan gelen uyarıları gizlememelisiniz. Görev hatalıysa veya iptal edildiyse, TResult geçersiz olur ve çalışma zamanı hatalarının nedeni olur.