Aracılığıyla paylaş


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 8'de 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<T>.Resultveya Task.GetAwaiter().GetResult() çağrısı Task.Wait()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 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.