如何在特定时间运行服务?

时间:2012-04-17 15:57:55

标签: c# web-services timer

我有一项服务,目前我认为每10分钟运行一次,但我希望它每天晚上7点运行,我需要改变什么? ....

 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)
    {

        if (_lastRun.Date < DateTime.Now.Date)
        {
            // stop the timer 
            _timer.Stop();               

            try
            {
                SmartImportService.WebService.WebServiceSoapClient test = new WebService.WebServiceSoapClient();
                test.Import();
            }
            catch (Exception ex) { }

            _lastRun = DateTime.Now;
            _timer.Start();
        }
    }

2 个答案:

答案 0 :(得分:1)

Windows服务是一项持续运行的任务。如果您正在寻找需要在指定时间运行的内容,请写一个Scheduled TaskOther good link

答案 1 :(得分:1)

更换:

if (_lastRun.Date < DateTime.Now.Date)
{
}

使用:

DateTime startAt = DateTime.Today.AddHours(19);
if (_lastRun < startAt && DateTime.Now >= startAt)
{
}

可能会做到这一点。但我更愿意使用已建议的计划任务