Timer
以下是System.Windows.Forms.Timer
C#代码:
Timer myTimer = new Timer();
myTimer.Interval = 10000;
myTimer.Tick += new EventHandler(doSth);
myTimer.Start();
计时器每10秒会doSth
,但是如何在启动时立即让它doSth
?
我尝试创建一个扩展Timer
的自定义计时器,但我无法覆盖Start
方法。
目前,我的代码是:
myTimer.Start();
doSth(this, null);
我觉得这不好。如何改进?
答案 0 :(得分:14)
这很完美。不要改变一件事。
答案 1 :(得分:2)
我不确定您的具体要求,但为什么不将代码放在另一个方法中的计时器回调中呢?
e.g。
private void tmrOneSec_Tick(object sender, System.EventArgs e)
{
DoTimerStuff();
}
private void DoTimerStuff()
{
//put the code that was in your timer callback here
}
这样,您可以在应用程序启动时调用DoTimerStuff()。
答案 2 :(得分:1)
计时器必须具有表单级别范围,并且不清楚您是否拥有该范围。出于好奇,我掀起了一个小例子,它对我有用:
private void Form1_Load(object sender, EventArgs e)
{
txtLookup.Text = "test";
DoSomething();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
DoSomething();
}
private void DoSomething()
{
txtLookup.Text += "ticking";
}
每隔10秒,它会在文本框中为文本添加另一个“滴答声”。
你说,
“计时器将每10秒执行一次,但是如何让它在启动时立即执行?”
我说,在调用计时器的启动方法之前立即调用doSth