【问题标题】:How can I get my windows service to run at a specific interval?如何让我的 Windows 服务以特定的时间间隔运行?
【发布时间】:2012-07-15 02:21:21
【问题描述】:

我想写一个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 分钟向我发送一次电子邮件。

【问题讨论】:

标签: c# windows windows-services


【解决方案1】:

【讨论】:

  • 每天以7:00 a.m to 21:00 pm 的间隔运行周一至周五 ? 非东部节日
【解决方案2】:

查看Quartz.NET 或搜索“Windows 任务调度”。

第一种方式是程序化的,后者是配置方式。

【讨论】:

    【解决方案3】:

    为什么不给你的服务添加一个计时器,让他在你配置的时间间隔内做你想做的事?

    【讨论】:

      【解决方案4】:

      文章详细介绍了如何创建windows服务http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx

      并且要在某个时间运行它,您可以设置计划作业

      【讨论】:

        【解决方案5】:

        您可能希望在您的服务中使用Quartz.net 之类的东西。然后,您可以使用 cron 表达式在您的服务中安排“作业”。

        【讨论】:

          【解决方案6】:

          您的代码看起来不错,但您是否在 OnStart 期间首先调用了 timer.start()?

          【讨论】:

            【解决方案7】:

            如果你需要对定时器进行操作,那么你有两种选择

            1. 创建 Windows 服务并实施某种调度。这可能很复杂,因此请做好准备,您可能会花费大量时间来解决已经解决的问题。
            2. 您可以设置一个计划任务来调用您的应用程序。

            这完全取决于你真正需要多少控制。

            【讨论】:

              【解决方案8】:

              对于上述功能,您可以使用控制台应用程序与 Windows 调度程序的组合。

              安排您的 exe 每 5 分钟执行一次。您的 exe 会向您发送电子邮件并停止。您有什么具体想通过 windows 服务实现的吗?

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-03-28
                • 1970-01-01
                • 2021-12-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多