Aufgaben im C#-Windows-Dienst planen
Für Situationen, in denen jede Mitternacht eine Aufgabe in einem in C# geschriebenen Windows-Dienst ausgeführt werden muss, empfiehlt es sich, den Aufgabenplaner zu verwenden, anstatt sich auf Thread.Sleep()
und zeitbasierte Prüfungen zu verlassen.
Ein effektiver Ansatz besteht darin, einen Timer in den Dienst zu implementieren. Der Timer sollte regelmäßig, beispielsweise alle 10 Minuten, ausgelöst werden und überprüfen, ob sich das Datum seit der letzten Ausführung geändert hat. Wenn ein neues Datum erkannt wird, wird der Timer angehalten, während der Aufräumvorgang durchgeführt wird, um sicherzustellen, dass er nur einmal pro Tag durchgeführt wird.
<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>
Das obige ist der detaillierte Inhalt vonWie plane ich eine tägliche Aufgabe in einem C#-Windows-Dienst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!