CA1849: Panggil metode asinkron saat dalam metode asinkron
Properti | Nilai |
---|---|
ID Aturan | CA1849 |
Judul | Memanggil metode asinkron saat dalam metode asinkron |
Golongan | Performa |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Semua metode di mana setara dengan akhiran Asinkron ada akan menghasilkan peringatan ini ketika dipanggil dari metode pengembalian Tugas. Selain itu, memanggil Task.Wait()
, Task<T>.Result
, atau Task.GetAwaiter().GetResult()
akan menghasilkan peringatan ini.
Deskripsi aturan
Dalam metode yang sudah asinkron, panggilan ke metode lain harus ke versi asinkron metode, jika ada.
Cara memperbaiki pelanggaran
Pelanggaran:
Task DoAsync()
{
file.Read(buffer, 0, 10);
}
Perbaikan:
Tunggu versi asinkron metode:
async Task DoAsync()
{
await file.ReadAsync(buffer, 0, 10);
}
Kapan harus menekan peringatan
Aman untuk menekan peringatan dari aturan ini jika ada dua jalur kode terpisah untuk sinkronisasi dan kode asinkron, menggunakan kondisi if. Juga jika ada pemeriksaan apakah Tugas telah diselesaikan, aman untuk menggunakan metode dan properti sinkronisasi.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1849
// The code that's violating the rule is on this line.
#pragma warning restore CA1849
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1849.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.