Bagikan melalui


CA2012: Gunakan ValueTasks dengan benar

Properti Nilai
ID Aturan CA2012
Judul Gunakan ValueTasks dengan benar
Golongan Keandalan
Perbaikan bersifat disruptif atau non-disruptif Non-disruptif
Diaktifkan secara default di .NET 8 Sebagai saran

Penyebab

ValueTask Instans yang dikembalikan dari pemanggilan anggota digunakan dengan cara yang dapat menyebabkan pengecualian, kerusakan, atau performa yang buruk.

Deskripsi aturan

ValueTask instans yang dikembalikan dari pemanggilan anggota dimaksudkan untuk langsung ditunggu. Upaya untuk menggunakan ValueTask beberapa kali atau untuk langsung mengakses hasil seseorang sebelum diketahui selesai dapat mengakibatkan pengecualian atau kerusakan. Mengabaikan ValueTask kemungkinan merupakan indikasi bug fungsional dan dapat menurunkan performa.

Cara memperbaiki pelanggaran

Secara umum, ValueTasks harus langsung ditunggu daripada dibuang atau disimpan ke lokasi lain seperti variabel atau bidang lokal.

Kapan harus menekan peringatan

Untuk ValueTask objek yang dikembalikan dari panggilan anggota arbitrer, pemanggil perlu mengasumsikan bahwa ValueTask harus dikonsumsi (misalnya, ditunggu) sekali dan hanya sekali. Namun, jika pengembang juga mengontrol anggota yang dipanggil dan memiliki pengetahuan lengkap tentang implementasinya, pengembang mungkin tahu aman untuk menekan peringatan, misalnya, jika pengembalian ValueTask selalu membungkus Task objek.

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 CA2012
// The code that's violating the rule is on this line.
#pragma warning restore CA2012

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA2012.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Baca juga