CA2261: Jangan gunakan ConfigureAwaitOptions.SuppressThrowing dengan Task<TResult>

Properti Nilai
ID Aturan CA2261
Judul Jangan gunakan ConfigureAwaitOptions.SuppressThrowing dengan Task<TResult>
Kategori Penggunaan
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Diaktifkan secara default di .NET 10 Sebagai peringatan
Bahasa yang berlaku C# dan Visual Basic

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 kompilasi daripada pada waktu runtime.

Cara memperbaiki pelanggaran

Ubah tipe Task<TResult> ke Task non-generik 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 runtime.