在c#中每x秒执行一次操作y分钟

8 c# timer

我需要每5秒运行一次功能10分钟.

我使用计时器运行它5秒钟,但如何将计时器限制为仅10分钟?

JMa*_*sch 14

只需捕获您想要停止的时间并从已用过的处理程序中结束计时器.这是一个例子(注意:我使用了a System.Threading.Timer timer.为你正在做的事情选择合适的计时器.例如,System.Windows.Forms.Timer如果你在Winforms中写作,你可能会在a .之后.)

public class MyClass
{
    System.Threading.Timer Timer;
    System.DateTime StopTime;
    public void Run()
    {
        StopTime = System.DateTime.Now.AddMinutes(10);
        Timer = new System.Threading.Timer(TimerCallback, null, 0, 5000);
    }

    private void TimerCallback(object state)
    {
        if(System.DateTime.Now >= StopTime)
        {
            Timer.Dispose();
            return;
        }
        // Do your work...
    }
}
Run Code Online (Sandbox Code Playgroud)


Pet*_*eld 10

让你的计时器循环如下:

DateTime endTime = DateTime.Now.AddMinutes(10);

while(endTime < DateTime.Now)
{
  // Process loop
}
Run Code Online (Sandbox Code Playgroud)

  • 我宁愿存储*结束时间*并在每次迭代之前将其与当前时间值进行比较.尽管如此,+1. (2认同)

小智 6

将Y分钟除以X间隔以获得需要运行的次数.之后,您只需要计算调用函数的次数.

在你的情况下,10分钟= 600秒/ 5秒=需要120次通话.只需要一个计数器跟踪你的函数被调用了多少次.


JP *_*oto 3

Timer.Stop()120 个刻度后。