CA2261: ConfigureAwaitOptions.SuppressThrowing ile Task<TResult> birlikte kullanmayın

Özellik Değer
Kural Kimliği CA2261
Başlık ConfigureAwaitOptions.SuppressThrowing ile Task<TResult> kullanmayın
Kategori Kullanım
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Uyarı olarak
Geçerli diller C# ve Visual Basic

Neden

Bir ConfigureAwaitOptions.SuppressThrowing değeri Task<TResult>.ConfigureAwait(ConfigureAwaitOptions)'ye geçirilir.

Kural açıklaması

Bu ConfigureAwaitOptions.SuppressThrowing seçenek genel Task<TResult> tarafından desteklenmez çünkü bu geçersiz bir TResult'nin döndürülmesine neden olabilir. Bu kural, çalışma zamanı yerine derleme zamanında hatayı gösterebilmek için SuppressThrowing ve Task<TResult> kullanımını işaretler.

İhlalleri düzeltme

ConfigureAwait(ConfigureAwaitOptions) çağrısından önce, Task<TResult> öğesini genel olmayan bir Task türüne dönüştürün.

Ö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 bastırılacak?

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.