Maison > développement back-end > C++ > Comment planifier une tâche quotidienne dans un service Windows C# ?

Comment planifier une tâche quotidienne dans un service Windows C# ?

Susan Sarandon
Libérer: 2025-01-10 10:27:40
original
885 Les gens l'ont consulté

How to Schedule a Daily Task in a C# Windows Service?

Planification des tâches dans le service Windows C#

Pour les situations où une tâche doit être exécutée tous les minuit dans un service Windows écrit en C#, il est recommandé d'utiliser le planificateur de tâches au lieu de s'appuyer sur Thread.Sleep() et des vérifications basées sur le temps.

Une approche efficace consiste à implémenter une minuterie dans le service. La minuterie doit se déclencher périodiquement, par exemple toutes les 10 minutes, et vérifier si la date a changé depuis la dernière exécution. Si une nouvelle date est détectée, la minuterie est mise en pause pendant que le processus de nettoyage est effectué, garantissant qu'il n'est effectué qu'une fois par jour.

<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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal