首页 > 解决方案 > 给定以下代码,每 x 秒调用一次 EventHandler

问题描述

截至目前,以下代码Tick?.Invoke每秒调用该方法。有没有办法轻松更改代码,例如每 5 秒调用一次?

private void Timer()
{
    var now = DateTime.Now;
    int lastSecond = now.Second;
    int lastDay = now.Day;

    while (goOnTiming)
    {
        now = DateTime.Now;

        if (now.Second != lastSecond)
        {
            Tick?.Invoke(this, new TickEventArgs(now: now));
            lastSecond = now.Second;
        }

        if (lastDay != now.Day)
        {
                NewDay?.Invoke(this, new TickEventArgs(now: now));
                lastDay = now.Day;
        }

    }
}

标签: c#timer

解决方案


使用定时器,可以使用系统定时器或表单定时器。下面是一个系统定时器的例子:

    private void CreateTimer()
    {
        var timer = new System.Threading.Timer(timerCallback);
        timer.Change(0, 5000);
    }

    private void timerCallback(object state)
    {
        System.Console.WriteLine("The timer called me");
    }

顺便说一句,您的方法可能会占用大量 CPU。


推荐阅读