2012-06-08 35 views
0

我有計時器的問題。 我在函數功能(在FUNC畫)運行函數每秒Visual C#

void func(){ 

/*...do something ... */ 
for(){ 
    for() { 
    /*loop*/ 

draw(A,B, Pen); 

} 

/*... do something ...*/ 
    } 
} 

這是繪製功能

public void draw1(Point Poc, Point Kra, Pen o) { 
     Graphics g = this.CreateGraphics(); 
     g.DrawLine(o,Poc.X+4, Poc.Y+4,Kra.X+4, Kra.Y+4); 
     g.Dispose(); 
     } 

我通話功能 '功能' 按鈕點擊

private void button4_Click(object sender, EventArgs e){ 

    func(); 

} 

我想打電話給畫函數evry秒(每秒畫線)。 在繪圖之間,函數需要繼續工作並計算=循環,並在下一行繪製一段時間(間隔)。我試着用

timer1.Tick += new EventHandler(timer1_Tick); 

等。

private void timer1_Tick(object sender, EventArgs e) 
    { 
     ... 
     draw(A, B, Pen) 
    } 

等。

但所有停止我的功能,並畫出一個隨機行。 我只想在函數'func'中兩個圖形之間的時間(間隔)。沒有定時器工作正常,但立即畫所有線,我需要緩慢的繪圖。 乾杯。

+0

你的計時器滴答方法應該有'畫(A,B,筆);而不是' 'draw1()' – deltree

+0

定時器已啓用? 也可以將參數添加到函數Draw1() –

+0

參數是好的。定時器已啓用。 –

回答

-9

解決了現在

System.Threading.Thread.Sleep(700); 
12

我不完全清楚你想要做什麼,但在一般情況下,你可以使用Timer類的對象指定的代碼要在指定的時間間隔執行。該守則將是這個樣子:

Timer myTimer = new Timer(); 
myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent); 
myTimer.Interval = 1000; // 1000 ms is one second 
myTimer.Start(); 

public static void DisplayTimeEvent(object source, ElapsedEventArgs e) 
{ 
    // code here will run every second 
} 
1

你不在WinForms應用程序繪製,您應對更新或繪製消息。在表單的Paint事件中執行您想要執行的操作(或覆蓋OnPaint方法)。如果您希望重新繪製表格,請使用Form.Invalidate。例如調用Form.Invalidate在計時器滴答......

+0

Downvoter:關心評論? –

2

試試這個

var aTimer = new System.Timers.Timer(1000); 

aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 

aTimer.Interval = 1000; 
aTimer.Enabled = true;  

//if your code is not registers timer globally then uncomment following code 

//GC.KeepAlive(aTimer); 



private void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    draw(A, B, Pen); 
}