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

时间:2014-06-27 02:57:53

标签: c# .net visual-studio-2010 visual-studio c#-4.0

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

我创建了一个计时器刻度事件来执行一个job.I想只调用一次计时器,之后我需要禁用计时器。请看下面的代码

   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.Need帮助中解决这个问题。 / p>

由于

3 个答案:

答案 0 :(得分:4)

为什么需要一个柜台:

这应该足够了

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

答案 1 :(得分:1)

如果您使用System.Timers.Timer,则另一种方法 - 使用Timer.AutoReset仅启动一次:

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

答案 2 :(得分:0)

使用lambda的简短表示法:

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