2012-08-08 61 views
3

Timer以下是System.Windows.Forms.Timer C#代码:如何让System.Windows.Forms.Timer在启动时立即运行Tick处理程序?

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

定时器将doSth每隔10秒,但如何让它doSth立即启动时?

我试图创建一个自定义计时器,它延伸Timer,但我不能覆盖Start方法。

现在,我的代码是:

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

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

+1

我认为这是好之前调用doSth。另请参阅http://stackoverflow.com/questions/6924072/how-to-fire-timer-elapsed-event-immediatly。 – Otiel 2012-08-08 14:10:00

+1

Freewind,你可以改变这个myTimer.Tick + = new EventHandler(doSth); 看看我发布的下面的答案和示例***在间隔时间结束时,不需要传递任何发件人的获取呼叫。 – MethodMan 2012-08-08 14:16:25

回答

14

这是完美的。不要改变一件事。

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()。

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秒钟其附加另一个“滴答”在文本框中的文本。

你说,

“定时器将doSth每隔10秒,但如何立即让其doSth开始的时候?”

我说,立即调用计时器的启动方法

相关问题