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.
Kesalahan dan peringatan yang terkait dengan
Ada beberapa kesalahan yang terkait dengan lock pernyataan dan sinkronisasi utas:
- CS0185: 'type' bukan jenis referensi seperti yang diperlukan oleh pernyataan kunci.
- CS1996: Tidak dapat menunggu dalam isi pernyataan kunci
- CS9217: Pernyataan kunci pada nilai jenis 'System.Threading.Lock' tidak dapat digunakan dalam metode asinkron atau ekspresi lambda asinkron.
Selain itu, pengkompilasi mungkin menghasilkan peringatan berikut yang terkait dengan lock pernyataan dan sinkronisasi utas:
- CS9216: Nilai jenis
System.Threading.Lockyang dikonversi ke jenis yang berbeda akan menggunakan kemungkinan penguncian berbasis monitor yang tidak diinginkan dalamlockpernyataan.
kesalahan pernyataan kunci
- CS0185: 'type' bukan jenis referensi seperti yang diperlukan oleh pernyataan kunci.
- CS1996: Tidak dapat menunggu dalam isi pernyataan kunci
- CS9217: Pernyataan kunci pada nilai jenis 'System.Threading.Lock' tidak dapat digunakan dalam metode asinkron atau ekspresi lambda asinkron.
Kesalahan ini menunjukkan bahwa kode Anda melanggar aturan mengenai lock pernyataan:
- Objek yang di-ed
lockharus merupakan jenis referensi. Jenis nilai tidak diperbolehkan. - Ekspresi
awaittidak dapat digunakan dalam cakupanlockpernyataan. - Pernyataan
locktidak dapat digunakan denganasyncmetode atau ekspresi lambda. Untuk kesalahan ini, Anda dapat mengganti jenis objek yang dikunci dengan jenis yang berbeda. Pernyataan inilockmenggunakan Monitor API.
Anda harus memperbarui kode Anda untuk mengikuti aturan lock pernyataan.
peringatan kunci
- CS9216: Nilai jenis
System.Threading.Lockyang dikonversi ke jenis yang berbeda akan menggunakan kemungkinan penguncian berbasis monitor yang tidak diinginkan dalamlockpernyataan.
Dimulai dengan C# 13, lock menghasilkan kode khusus ketika objek target adalah System.Threading.Lock objek. Pengkompilasi menghasilkan peringatan ini saat Anda menggunakan Lock objek, tetapi kode Anda mengonversi jenisnya menjadi sesuatu yang lain. Oleh karena itu, pengkompilasi menghasilkan kode penguncian umum, bukan kode penguncian khusus untuk jenisnya Lock . Contohnya:
object lockObject = new System.Threading.Lock();
lock (lockObject) // CS9216
{
// .. Your code
}
Anda harus memastikan variabel atau ekspresi mewakili jenis Lock objek.