Ikhtisar
Memandangkan Thread.Abort()
tidak boleh dipercayai, pembangun memerlukan alternatif yang teguh untuk menamatkan urutan dalam .NET. Kaedah berasaskan gelung mudah seperti menyemak bendera boolean yang tidak menentu tidak mencukupi untuk senario yang rumit.
Mengundi Bendera Berhenti
Menyemak bendera perhentian yang ditetapkan secara kerap ialah strategi biasa. Menggunakan bendera volatile
memastikan kemas kini tepat pada masanya, tetapi memerlukan pertimbangan yang teliti, terutamanya dalam ungkapan lambda.
Memanfaatkan Pembatalan TPL
Perpustakaan Selari Tugas (TPL) menawarkan mekanisme pembatalan yang unggul. Sama seperti tinjauan pendapat, tetapi menggunakan binaan berstruktur, TPL bergantung pada corak pembatalan koperasi untuk penamatan bersih.
Menggunakan Pemegang Tunggu
Pemegang tunggu memberikan kawalan yang berkesan apabila benang bergantung pada pemasaan atau isyarat tertentu. Fungsi tunggu membenarkan gangguan benang terkawal dan pengurusan aliran.
Pendekatan Khusus Konteks
Situasi tertentu memerlukan kaedah penamatan yang disesuaikan. Sebagai contoh, operasi rangkaian menggunakan kelas Socket
boleh diganggu dengan memanggil Close()
, menghalang sekatan pada Send
atau Receive
.
Thread.Interrupt: Pendekatan Berhati-hati
Thread.Interrupt()
menawarkan kesederhanaan tetapi tidak mempunyai kawalan terperinci ke atas titik gangguan yang selamat. Ia menyuntik pengecualian ke dalam panggilan menyekat khusus dalam Perpustakaan Kelas Asas (BCL). Walaupun secara amnya tidak digalakkan kerana kemungkinan kekaburan, ia mungkin sesuai untuk algoritma yang sangat bergantung pada panggilan menyekat BCL ini.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menamatkan Benang dengan Bersih dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!