C#Multi -Threaded Acara Pemprosesan: Perbincangan Amalan Terbaik
Apabila berurusan dengan acara C#dalam persekitaran berbilang, cadangan umum adalah untuk menyalin acara sebelum menyemak sama ada acara itu kosong untuk mengelakkan isu -isu yang berkaitan dengan benang. Walau bagaimanapun, sesetengah orang mempersoalkan keperluan pendekatan ini dan percaya bahawa ini hanyalah model "pemrograman takhayul".
Sebab untuk menyalin insiden
Tujuan penyalinan peristiwa adalah untuk mengelakkan keabnormalan kutipan udara yang berpotensi apabila mengakses peristiwa dalam persekitaran yang pelbagai. Adalah diandaikan bahawa jika benang lain membatalkan program pemprosesan acara apabila benang anda hendak memanggil acara itu, permohonan acara mungkin mengutip rujukan kosong. Walau bagaimanapun, seperti yang dinyatakan oleh Eric Lippert, program pemprosesan acara itu sendiri direka untuk mengatasi masalah yang berpotensi. Oleh itu, tumpuan utama adalah untuk menyelesaikan keadaan bahawa kejadian itu mungkin kosong.
kekosongan kejadian
"mod standard" menggunakan nilai kosong yang jelas bukan cara yang paling berkesan. Sebagai alternatif, prosedur pemprosesan untuk peristiwa permulaan yang tidak akan dikeluarkan dapat dihapuskan sepenuhnya. Kaedah ini hanya perlu menambah operasi mudah ke pernyataan acara untuk memastikan masalah mengelakkan kekosongan tanpa menggunakan tabiat replikasi/pemeriksaan yang rumit.
c# 6 dan versi yang lebih tinggi dari langkah berjaga -jaga
Dalam C# 6 dan versi yang lebih tinggi, pengkomputeran penggabungan udara ("?") Menyediakan satu kaedah pemprosesan acara yang mudah. Kod berikut dengan berkesan memeriksa sama ada peristiwa itu kosong, dan hanya memanggilnya apabila peristiwa tidak kosong:
Kesimpulan
Pertimbangan yang teliti untuk menangani peristiwa -peristiwa dalam persekitaran multi -threaded. Walaupun peristiwa menyalin dapat menyelesaikan situasi yang melampau, adalah penting untuk memahami keteguhan prosedur pemprosesan peristiwa dan meneroka kaedah alternatif.
Atas ialah kandungan terperinci Adakah Menyalin Acara C# Sebelum Pemeriksaan Null Diperlukan untuk Keselamatan Benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!