【问题标题】:how to set the timer interval for one day in a windows service如何在Windows服务中设置一天的定时器间隔
【发布时间】:2013-08-29 06:29:43
【问题描述】:

我创建了一个 Windows 服务。我在其中设置了每隔一分钟的计时器间隔,因此它每分钟触发一次。但我需要每天触发相同的..

您可以在下面找到我在OnStart() 方法中设置计时器间隔的代码..

代码:

    protected override void OnStart(string[] args)
    {
        TraceService("start service");

        //handle Elapsed event
        timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);

        //This statement is used to set interval to 1 minute (= 60,000 milliseconds)

        timer.Interval = 86400000;

        //enabling the timer
        timer.Enabled = true;
    }

【问题讨论】:

  • 那么问题出在哪里?它不工作吗?
  • 你用的是哪个定时器? .NET 中有很多计时器。
  • @nowhewhomustnotbenamed。 timer.Elapsed 仅在 System.Timers.Timer 中找到
  • @SriramSakthivel:是的..你是对的。错过了:(

标签: c# timer


【解决方案1】:

这篇文章很老了,但我认为值得一提的是,与其使用像 86400000 这样的幻数,不如使用像 new TimeSpan(1, 0, 0, 0).TotalMilliseconds 这样的东西,这样如果有人需要改变他们会知道应该改变什么。

【讨论】:

    【解决方案2】:

    所以,关于你的帖子有几点:

    首先,它没有说明问题所在!

    从技术上讲,Timer 支持大约 25 天的定时器间隔。 所以,你的代码应该可以工作了。

    如果你想超过25天,又不关心线程安全,建议你去System.Threading.Timer。

    更多信息here

    由于您的服务作为基于 Windows 的服务运行,我建议您转到 System.Threading.Timer。

    【讨论】:

    • 我的问题是如何设置一天的定时器间隔..当我尝试给一分钟(60000毫秒)它的工作..因此我给了 86400000(24*60*60*1000)作为不起作用的计时器间隔。我正在通过调用一个方法进行测试,该方法将日志条目存储在一个单独的文件中,当我通过手动更改系统日期时间检查一天时,我没有得到条目...请提供解决方案来实现这一点...
    • @D.N.E.Z - 如果你告诉计时器等待一天,它会等待一天。它不关注系统时钟。
    【解决方案3】:

    现在在 C# 中,您可以使用 TimeSpan 类来获取一天中的总毫秒数来设置每天的计时器。

    var totalMilliSecondsPerDay = TimeSpan.FromDays(1).TotalMilliseconds;
    var timer = new Timer(totalMilliSecondsPerDay);
    

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 2011-01-23
      • 2014-03-28
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多