Planification des tâches quotidiennes du service Windows C#
Pour que les services Windows C# effectuent des tâches quotidiennement, vous avez le choix entre plusieurs méthodes. Il n'est pas recommandé d'utiliser la méthode Thread.Sleep()
. Une meilleure approche consiste à utiliser une tâche planifiée ou à implémenter une minuterie dans le service.
Pour les solutions personnalisées, des minuteries peuvent être définies dans le service. Cette minuterie doit se déclencher à intervalles fixes (par exemple toutes les 10 minutes). Lorsqu'il est déclenché, le code peut vérifier si la date a changé depuis la dernière fois qu'il a été exécuté. Si tel est le cas, vous pouvez arrêter le chronomètre pendant l'exécution de la tâche de nettoyage. Une fois la tâche terminée, le chronomètre peut être redémarré.
L'extrait de code suivant illustre cette approche :
<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>
Ce paramètre garantira que les tâches de nettoyage sont effectuées de manière fiable à minuit chaque jour sans utiliser Thread.Sleep()
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!