Bagikan melalui


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.