我在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>
由于
答案 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();};