Penamatan Benang dalam .NET
Dalam .NET, pembangun mungkin menghadapi situasi di mana ia menjadi perlu untuk menamatkan rangkaian berjalan lebih awal. Artikel ini membincangkan cara mendekati tugas pengaturcaraan biasa ini dengan mengambil kira pertimbangan keselamatan yang sesuai.
Bahaya Benang.Batalkan()
Gerakan pertama untuk penamatan benang selalunya menggunakan kaedah Thread.Abort(). Walau bagaimanapun, kaedah ini telah ditamatkan dan harus dielakkan kerana akibatnya yang berbahaya. Thread.Abort() boleh mengakibatkan keadaan thread yang tidak dijangka, termasuk rasuah data dan kebocoran sumber.
Penamatan Thread Koperasi
Pendekatan yang lebih bertanggungjawab ialah melaksanakan penamatan thread koperasi . Ini melibatkan mereka bentuk benang untuk mengendalikan permintaan penamatan diri.
Satu teknik biasa ialah memperkenalkan medan boolean yang dipanggil "keepGoing" dalam urutan. Bendera ini ditetapkan kepada palsu apabila benang harus berhenti. Gelung pelaksanaan benang kemudian menyemak nilai "keepGoing" dengan kerap. Apabila ia menemui palsu, ia dengan anggun menyimpulkan operasinya dan keluar:
while (keepGoing) { // Perform work here. }
Mengendalikan Operasi Penyekatan
Walau bagaimanapun, jika urutan mungkin menyekat dalam operasi seperti Sleep() atau Tunggu(), pendekatan yang lebih mantap diperlukan. Dalam kes sedemikian, utas utama boleh memanggil Thread.Interrupt() untuk memecahkan benang daripada keadaan menyekatnya. Urutan yang terganggu harus bersedia untuk mengendalikan ThreadInterruptedException:
try { while (keepGoing) { // Perform work here. } } catch (ThreadInterruptedException exception) { // Perform cleanup operations. }
Dengan mengguna pakai penamatan rangkaian koperasi, pembangun boleh mengelakkan risiko yang berkaitan dengan Thread.Abort() dan memastikan penamatan urutan berjalan yang selamat dan teratur. Pendekatan ini menggalakkan kestabilan dan meminimumkan potensi ralat dalam aplikasi berbilang benang.
Atas ialah kandungan terperinci Bagaimana untuk Menamatkan Benang dengan Selamat dalam Aplikasi .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!