CA2261: ile kullanmayın ConfigureAwaitOptions.SuppressThrowing
Task<TResult>
Özellik | Değer |
---|---|
Kural Kimliği | CA2261 |
Başlık | ile kullanmayın ConfigureAwaitOptions.SuppressThrowing Task<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 TResult
bir 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.