繁体   English   中英

在C#中的间隔时间之后停止计时器

[英]stop timer after interval time in c#

我在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; 在没有任何条件的情况下,发生的事情是在tick事件中没有调用Cleanup()函数。因此,我从Google获得了另一个使用counter的解决方案。对于counter我也面临着同样的问题, Cleanup()不是打电话。

如果我没有禁用计时器,则该函数每10秒调用一次。我只需要调用一次Cleanup()函数,该函数位于timer.tick中。需要帮助解决此问题。

谢谢

为什么需要柜台:

这样就足够了

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

如果使用的是System.Timers.Timer则可以使用另一种方法-使用Timer.AutoReset使其仅触发一次:

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();};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM