我想写一个Windows服务。但它需要在特定时间运行。例如,我的服务应该每隔5分钟给我发电子邮件。
private Timer _timer;
private DateTime _lastRun = DateTime.Now;
protected override void OnStart(string[] args)
{
_timer = new Timer(10 * 60 * 1000); // every 10 minutes
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
//...
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// ignore the time, just compare the date
if (_lastRun.Date < DateTime.Now.Date)
{
// stop the timer while we are running the cleanup task
_timer.Stop();
//
// do cleanup stuff
//
_lastRun = DateTime.Now;
_timer.Start();
}
}
我希望我的服务每隔5分钟给我发电子邮件。
答案 0 :(得分:5)
我已经看到另一个问题,其中讨论了windows service vs scheduled task this。所以你可能想要看一下除此之外的两个类似的问题可能会有所帮助:
这里也有一些很棒的链接:
答案 1 :(得分:2)
查看Quartz.NET或搜索&#34; Windows任务计划&#34;。
第一种方法是程序化的,后一种方法是配置。
答案 2 :(得分:1)
为什么不在您配置的时间间隔内为您的服务添加一个计时器?
答案 3 :(得分:1)
本文提供了如何创建Windows服务http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx
的演练要在特定时间运行它,您可以设置计划作业
答案 4 :(得分:1)
您可能希望在服务中使用Quartz.net之类的内容。然后,您可以使用cron表达式来安排服务中的“作业”。
答案 5 :(得分:1)
您的代码看起来不错,但是您在OnStart期间首先调用了timer.start()吗?
答案 6 :(得分:1)
如果您需要对计时器进行操作,那么您有两个选择
这完全取决于你真正需要多少控制权。
答案 7 :(得分:0)
对于上述功能,您可以将控制台应用程序与Windows调度程序结合使用。
安排你的exe每隔5分钟执行一次。你的exe会给你发电子邮件并停止。你想通过Windows服务实现什么特定的东西吗?