c#中一段时间后的停止计时器

本文关键字:计时器 一段时间 | 更新日期: 2023-09-27 18:01:53

我想以200ms的间隔重复执行一些操作,从时间t=0开始到t=10秒。

目前,我在一个变量中跟踪经过的时间。这看起来很不舒服。下面是代码-

using System;
using System.Timers;
class Program
{
    static int interval = 200; // 0.2 seconds or 200 ms
    static int totalTime = 10000; // 10 seconds or 10000 ms
    static int elapsedTime = 0; // Elapsed time in ms
    static Timer timer;
    static void Main(string[] args)
    {
        timer = new Timer(interval);
        timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        timer.Enabled = true;
        Console.ReadKey(); // for checking
    }
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        if (elapsedTime > totalTime)
            timer.Stop();
        else
        {
            // here I am performing the task, which starts at t=0 sec to t=10 sec
        }
        elapsedTime += interval;
    }
}

请建议,如果有更好的方法来执行相同的任务。示例代码总是值得赞赏的。

c#中一段时间后的停止计时器

您应该停止事件中的计时器并重新开始,只是为了确保您的执行不会两次进入事件。如:

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    timer.Stop();
    if (elapsedTime > totalTime)
    {
        return;
    }
    else
    {
        // here I am performing the task, which starts at t=0 sec to t=10 sec
        timer.Enabled = true; //Or timer.Start();
    }
    elapsedTime += interval;
}