首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >实现“定时器”的最佳方式是什么?

实现“定时器”的最佳方式是什么?
EN

Stack Overflow用户
提问于 2012-09-22 01:58:26
回答 3查看 620.2K关注 0票数 212

实现计时器的最佳方式是什么?一个代码样例将会很棒!对于这个问题,“最佳”被定义为最可靠(失火次数最少)和精确。如果我指定的间隔是15秒,我希望目标方法每15秒调用一次,而不是每10 - 20秒调用一次。另一方面,我不需要纳秒精度。在本例中,该方法每14.51 - 15.49秒触发一次是可以接受的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-22 01:59:23

使用Timer类。

代码语言:javascript
复制
public static void Main()
{
    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    aTimer.Interval = 5000;
    aTimer.Enabled = true;

    Console.WriteLine("Press \'q\' to quit the sample.");
    while(Console.Read() != 'q');
}

 // Specify what you want to happen when the Elapsed event is raised.
 private static void OnTimedEvent(object source, ElapsedEventArgs e)
 {
     Console.WriteLine("Hello World!");
 }

由Timer对象上的Interval属性指定的Elapsed事件将每X毫秒引发一次。它将调用您指定的Event Handler方法。在上面的示例中,它是OnTimedEvent

票数 367
EN

Stack Overflow用户

发布于 2012-09-22 02:05:51

通过使用System.Windows.Forms.Timer类,您可以实现所需的功能。

代码语言:javascript
复制
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();


t.Interval = 15000; // specify interval time as you want
t.Tick += new EventHandler(timer_Tick);
t.Start();

void timer_Tick(object sender, EventArgs e)
{
      //Call method
}

通过使用stop()方法,您可以停止计时器。

代码语言:javascript
复制
t.Stop();
票数 49
EN

Stack Overflow用户

发布于 2012-09-22 02:12:30

ServiceBase引用到您的类,并将以下代码放入OnStart事件中:

Constants.TimeIntervalValue = 1 (小时)..Ideally您应该在配置文件中设置此值。

StartSendingMails =要在应用程序中运行的函数名。

代码语言:javascript
复制
 protected override void OnStart(string[] args)
        {
            // It tells in what interval the service will run each time.
            Int32 timeInterval = Int32.Parse(Constants.TimeIntervalValue) * 60 * 60 * 1000;
            base.OnStart(args);
            TimerCallback timerDelegate = new TimerCallback(StartSendingMails);
            serviceTimer = new Timer(timerDelegate, null, 0, Convert.ToInt32(timeInterval));
        }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12535722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档