c#中间隔时间后的停止计时器

本文关键字:计时器 中间 时间 | 更新日期: 2023-09-27 18:10:24

我在visual studio 2008中使用.net compact framework 3.5

我已经创建了一个计时器滴答事件来执行作业。我想调用计时器只有一次,之后我需要禁用计时器。请参阅我下面的代码

   int counter = 0;
        var timer = new Timer { Enabled = true, Interval = 10000 };
        timer.Tick += delegate
        {
            Cleanup();
        };
        counter++;
        if (counter >= 1)
        {
            timer.Enabled = false;
        }

我在没有任何条件的情况下尝试了timer.Enabled = false;,发生的情况是Cleanup()函数没有调用,这是在tick事件内。所以从谷歌我又得到了一个使用计数器的解决方案。与计数器我也面临同样的问题,Cleanup()不调用。

如果我没有禁用定时器,则该函数每隔10秒调用一次。我需要调用Cleanup()函数只有一次,这是在timer.tick.需要帮助来解决这个问题。

谢谢

c#中间隔时间后的停止计时器

为什么需要计数器:

这应该足够了

timer.Tick += delegate
{
   timer.Enabled = false;
   Cleanup();
};

另一种方法,如果你使用System.Timers.Timer -使用定时器。自动复位使它只触发一次:

var timer = new System.Timers.Timer(10000) { AutoReset = false };
timer.Elapsed += (s,e)=>Cleanup();
timer.Enabled = true;

使用lambda:

var timer = new Timer { Enabled = true, Interval = 10000 };
timer.Tick +=()=>{ timer.Enabled=false; Cleanup();};