Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA1849 |
| Başlık | Asenkron bir yöntemdeyken asenkron yöntemleri çağırın |
| Kategori | Performans |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
Async ile biten eşdeğerin bulunduğu tüm yöntemler, task 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 asenkron olan bir yöntemde, diğer yöntemlere yapılan çağrılar, varsa, asenkron 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?
Senkron ve asenkron kod için bir if koşulu kullanarak iki ayrı kod yolu olması durumunda, bu kuraldan gelen bir uyarıyı bastırmak 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 noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.