如何让System.Windows.Forms.Timer在启动时立即运行Tick处理程序?

时间:2012-08-08 14:04:43

标签: c# timer

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

我觉得这不好。如何改进?

3 个答案:

答案 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