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.需要帮助来解决这个问题。
谢谢
为什么需要计数器:
这应该足够了
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();};