3

以下TimerSystem.Windows.Forms.Timer C# 代码:

Timer myTimer = new Timer();
myTimer.Interval = 10000;
myTimer.Tick += new EventHandler(doSth);
myTimer.Start();

定时器会doSth每 10 秒一次,但是如何让它doSth在启动时立即启动呢?

我试图创建一个扩展的自定义计时器Timer,但我无法覆盖该Start方法。

现在,我的代码是:

myTimer.Start();
doSth(this, null);

我不认为这很好。如何改进它?

4

3 回答 3

15

这是完美的。不要改变任何事情。

于 2012-08-08T14:09:27.900 回答
2

我不确定您的确切要求,但为什么不将代码放在另一个方法中的计时器回调中呢?

例如

private void tmrOneSec_Tick(object sender, System.EventArgs e)
{
    DoTimerStuff();
}

private void DoTimerStuff()
{
    //put the code that was in your timer callback here
}

这样你就可以在应用程序启动时调用 DoTimerStuff() 。

于 2012-08-08T14:13:27.047 回答
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秒做一次,但如何让它在启动时立即做?”

我说,在调用计时器的 start 方法之前立即调用 doSth

于 2012-08-08T14:16:36.977 回答