Bagikan melalui


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 8 Tidak

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.

Baca juga