CA2261: Jangan gunakan ConfigureAwaitOptions.SuppressThrowing
dengan Task<TResult>
Properti | Nilai |
---|---|
ID Aturan | CA2261 |
Judul | Jangan gunakan ConfigureAwaitOptions.SuppressThrowing dengan Task<TResult> |
Golongan | Penggunaan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 8 | Sebagai peringatan |
Penyebab
Nilai ConfigureAwaitOptions.SuppressThrowing diteruskan ke Task<TResult>.ConfigureAwait(ConfigureAwaitOptions).
Deskripsi aturan
Opsi ConfigureAwaitOptions.SuppressThrowing ini tidak didukung oleh generik Task<TResult>, karena mungkin menyebabkan pengembalian yang tidak valid TResult
. Aturan ini menandai penggunaan SuppressThrowing dengan Task<TResult> untuk menampilkan kesalahan pada waktu build daripada run time.
Cara memperbaiki pelanggaran
Transmisikan Task<TResult> ke non-generik Task sebelum memanggil ConfigureAwait(ConfigureAwaitOptions).
Contoh
Cuplikan kode berikut menunjukkan pelanggaran CA2261:
Task<int> t = new Task<int>(() => 1);
t.ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Cuplikan kode berikut menunjukkan perbaikan:
Task<int> t = new Task<int>(() => 1);
((Task)t).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing);
Kapan harus menyembunyikan kesalahan
Anda tidak boleh menyembunyikan peringatan dari aturan ini. Jika tugas salah atau dibatalkan, TResult
akan tidak valid dan menyebabkan kesalahan run-time.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk