CA1849: Zaman uyumsuz yöntem içindeyken zaman uyumsuz yöntemleri çağırma
Özellik | Değer |
---|---|
Kural Kimliği | CA1849 |
Başlık | Zaman uyumsuz bir yöntemdeyken zaman uyumsuz yöntemleri çağırma |
Kategori | Performans |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Neden
Zaman uyumsuz son ekli eşdeğerin bulunduğu tüm yöntemler, Görev döndüren bir yöntemden çağrıldığında bu uyarıyı üretir. Buna ek olarak, , Task.Wait()
veya Task<T>.Result
çağrısı Task.GetAwaiter().GetResult()
bu uyarıyı oluşturur.
Kural açıklaması
Zaten zaman uyumsuz olan bir yöntemde, diğer yöntemlere yapılan çağrılar, mevcut oldukları zaman uyumsuz sürümlerine yönelik olmalıdır.
İhlalleri düzeltme
İhlal:
Task DoAsync()
{
file.Read(buffer, 0, 10);
}
Düzeltme:
Yönteminin zaman uyumsuz sürümünü bekleyin:
async Task DoAsync()
{
await file.ReadAsync(buffer, 0, 10);
}
Uyarıların ne zaman bastırılması gerekiyor?
Eşitleme ve zaman uyumsuz kod için if koşulu kullanarak iki ayrı kod yolu olması durumunda, bu kuraldan gelen bir uyarıyı gizlemeniz güvenlidir. Ayrıca, Görevin çözümlenip çözümlenmediğine yönelik bir denetim varsa, eşitleme yöntemlerini ve özelliklerini kullanmak güvenlidir.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1849
// The code that's violating the rule is on this line.
#pragma warning restore CA1849
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.