Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Harta benda | Nilai |
|---|---|
| Identifikasi Aturan | CA2025 |
| Titel | Jangan meneruskan instans 'IDisposable' ke dalam tugas yang tidak diawasi |
| Kategori | Keandalan |
| Perbaikan bersifat merusak atau tidak merusak | Tanpa putus |
| Diaktifkan secara default di .NET 10 | Tidak. |
Penyebab
Instans IDisposable diteruskan ke tugas yang tidak diawasi dan berpotensi dibuang sebelum tugas selesai menggunakan instans.
Deskripsi aturan
Tugas yang tidak diawasi yang menggunakan IDisposable instans mungkin menggunakan instans tersebut lama setelah dibuang. Pastikan tugas yang menggunakan instans tersebut selesai sebelum instans dibuang.
Contoh
Cuplikan kode berikut (dan setara Visual Basic-nya) adalah pelanggaran CA2025:
public Task DoSomethingAsync()
{
// Using statements and using blocks can both be violations.
using (var disposable = new DisposableThing())
{
return DoSomethingInternalAsync(disposable);
}
}
public async Task DoThingsAsync()
{
var disposable = new DisposableThing();
var task = DoSomethingInternalAsync(disposable);
// More code here.
dispose.Dispose();
// It's a violation if arguments are disposed before the task is awaited.
await task.ConfigureAwait(false);
}
Kapan harus menekan peringatan
Tekan peringatan ini jika Anda tahu tugas selesai menggunakan IDisposable instans sebelum dibuang.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan preprosesor pada file sumber Anda untuk menonaktifkan dan kemudian mengaktifkan kembali aturan tersebut.
#pragma warning disable CA2025
// The code that's violating the rule is on this line.
#pragma warning restore CA2025
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA2025.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.