Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 24412|Jawab: 1

[Sumber] Perbedaan antara ManualResetEvent dan AutoResetEvent yang dipelajari oleh utas C#

[Salin tautan]
Diposting pada 31/05/2018 14.59.47 | | | |
Mari kita bahas ManualResetEvent terlebih dahulu, dan saya akan menyelingi beberapa konten AutoResetEvent selama diskusi untuk membandingkan:

ManualResetEvent dapat memblokir satu atau beberapa utas hingga sinyal diterima yang memberi tahu ManualResetEvent untuk berhenti memblokir utas saat ini.

Informasi tentang ManualResetEvent

.net/c# Thread Thread Tangguhkan dan Lanjutkan solusi usang
https://www.itsvse.com/thread-4769-1-1.html
(Sumber: Architect_Programmer)


Bayangkan objek ManualResetEvent memiliki properti jenis Boolean, IsRelease, untuk mengontrol apakah akan memblokir utas saat ini. Kita dapat mengatur properti ini saat menginisialisasi, seperti ManualResetEvent event=new ManualResetEvent(false); Ini menunjukkan bahwa properti default adalah memblokir utas saat ini.

Contoh kode:



Perhatikan perbedaan penting antara ManualResetEvent dan AutoResetEvent di sini:

manual pasti akan mengirimkan sinyal ke utas 1 dan utas 2,Auto hanya akan mengirim sinyal ke salah satu dari mereka secara acak.

Mengapa yang satu disebut manual dan yang lainnya disebut otomatis? Saya pikir ini adalah pertanyaan yang dimiliki banyak orang, dan sekarang kita akan melihat pertanyaan ini.

Hanya now_manualResetEvent . Set(); Saya pikir semua orang memahami kalimat ini, yang dapat dianggap sebagai pengaturan properti IsRelease menjadi kenyataan

_manualResetEvent.WaitOne(); Tidak lagi memblokir utas 1 setelah menerima sinyal. Nilai IsRelease berlaku di seluruh proses setelah itu.Kalau

Jika Anda ingin mengembalikan nilai IsRelease ke false, Anda harus memanggil metode _manualResetEvent.Reset() lagi.

Jika _autoResetEvent.set(), maka _autoResetEvent.WaitOne() akan secara otomatis mengatur nilai IsRelease ke false.

Itu sebabnya yang satu disebut otomatis dan yang lainnya manual.



Kode pengujian:







Mantan:. Komponen pemetaan objek OOM tercepat .NET, Tiny Mapper, dalam praktik proyek
Depan:Pencetakan informasi debug C# DEBUG dan penjelasan terperinci keluaran
 Tuan tanah| Diposting pada 18/12/2024 20.30.44 |
ManualResetEvent dan AutoResetEvent mewarisi dariEventWaitHandle, seperti yang ditunjukkan pada gambar di bawah ini:



Referensi:Login hyperlink terlihat.

Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com