Penjadualan Tugasan Harian Perkhidmatan Windows C#
Untuk menjadikan perkhidmatan C# Windows melaksanakan tugas setiap hari, terdapat berbilang kaedah untuk dipilih. Ia tidak disyorkan untuk menggunakan kaedah Thread.Sleep()
. Pendekatan yang lebih baik ialah menggunakan tugas berjadual atau melaksanakan pemasa dalam perkhidmatan.
Untuk penyelesaian tersuai, pemasa boleh ditetapkan dalam perkhidmatan. Pemasa ini harus menyala pada selang waktu tetap (mis. setiap 10 minit). Apabila dicetuskan, kod boleh menyemak sama ada tarikh telah berubah sejak kali terakhir ia dijalankan. Jika ya, anda boleh menghentikan pemasa semasa melakukan tugas pembersihan. Setelah tugas selesai, pemasa boleh dimulakan semula.
Coretan kod berikut menunjukkan pendekatan ini:
<code class="language-csharp">private Timer _timer; private DateTime _lastRun = DateTime.Now.AddDays(-1); protected override void OnStart(string[] args) { _timer = new Timer(10 * 60 * 1000); // 每10分钟 _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); _timer.Start(); //... } private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // 忽略时间,只比较日期 if (_lastRun.Date < DateTime.Now.Date) { _timer.Stop(); // 执行每日清理任务 _lastRun = DateTime.Now; _timer.Start(); } }</code>
Tetapan ini akan memastikan tugas pembersihan dilakukan dengan pasti pada tengah malam setiap hari tanpa menggunakan Thread.Sleep()
.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjadualkan Perkhidmatan Windows C# untuk Menjalankan Tugas Harian dengan Boleh Dipercayai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!