Bandingkan Menggunakan Thread.Sleep dan Pemasa untuk Pelaksanaan Tertunda
Apabila ingin menangguhkan pelaksanaan kod, pilihan termasuk Thread.Sleep dan Pemasa. Walaupun kedua-duanya memenuhi tujuan ini, mereka berbeza dalam pendekatan dan kecekapan mereka.
Thread.Sleep: Intensif Sumber tetapi Terdedah kepada Kelewatan
Menggunakan Thread.Sleep mencipta yang baharu benang untuk menjeda pelaksanaan. Walau bagaimanapun, pendekatan ini tidak cekap apabila berbilang kelewatan berlaku, kerana setiap rangkaian baharu memerlukan overhed sumber yang ketara untuk penciptaan dan pemusnahan. Selain itu, Thread.Sleep mungkin memperkenalkan kelewatan yang tidak dijangka kerana OS boleh meletakkan benang itu tidur lebih lama daripada yang ditentukan.
Pemasa: Cekap dan Lebih Tepat
Sebaliknya, Pemasa menghantar panggilan balik pada utas pool thread, menggunakan semula thread sedia ada dan bukannya membuat thread baharu. Ini menjimatkan sumber dan meningkatkan kecekapan. Pemasa juga bertujuan untuk melaksanakan panggilan balik lebih dekat kepada masa yang ditentukan, memberikan ketepatan yang lebih tinggi daripada Thread.Sleep.
Melupuskan Pemasa
Memandangkan pelaksanaan ditangguhkan, timbul persoalan bagaimana untuk melupuskan contoh Pemasa. Satu penyelesaian yang berpotensi adalah untuk menghantar Pemasa sebagai parameter dalam panggilan balik dan panggil Buang dalam panggilan balik itu. Walau bagaimanapun, ini mungkin membawa kepada isu di mana Pemasa dikunci semasa pelaksanaan.
Pendekatan alternatif ialah mencipta kelas "TimerState" berasingan yang merangkum tikar Pemasa. Apabila mencipta pemasa, kunci objek ini untuk mengelakkan pelupusan pramatang.
Kesimpulan
Berdasarkan pertimbangan ini, Pemasa secara amnya merupakan pilihan yang diutamakan untuk pelaksanaan tertangguh kerana penambahbaikannya kecekapan dan ketepatan. Walau bagaimanapun, jika action() beroperasi pada UI, mungkin lebih sesuai untuk menggunakan System.Windows.Forms.Timer, yang melaksanakan panggilan balik pada urutan UI.
Atas ialah kandungan terperinci Thread.Sleep vs. Pemasa untuk Perlaksanaan Tertunda: Manakah Lebih Cekap dan Tepat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!