2012-08-08 63 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開始的時候?」

我說,立即調用計時器的啓動方法

相關問題