CA1849: Asenkron bir yöntem içindeyken asenkron yöntemler çağırın

Ö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.

Ayrıca bkz.