2013-10-26 49 views
1

我的問題可能很簡單。在一個C#項目中,我試圖在click事件中設置不同類中的實例狀態。麻煩的是,我想在一段時間過去之後這樣做,沒有任何C#經驗,我覺得這很難完成。如何在計時器後設置狀態。已過期

在此先感謝!

我的代碼如下:

public void button1_Click(object sender, EventArgs e) 
{ 
    kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood); 
    kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood);    
    this.Refresh();    
} 

回答

1

最簡單的方法是使用async(假設你使用C#5):

public async void button1_Click(object sender, EventArgs e) 
{ 
    await Task.Delay(Timespan.FromSeconds(5)); 
    kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood); 
    kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood);    
    this.Refresh();    
} 

另一種選擇是使用Timer

public void button1_Click(object sender, EventArgs e) 
{ 
    var timer = new System.Windows.Forms.Timer { Interval = 5000 }; 
    timer.Tick += delegate 
    { 
     timer.Dispose(); 
     kruispunt.zPad1.voetstoplicht1.setStatus(StoplichtStatus.Rood); 
     kruispunt.zPad1.voetstoplicht2.setStatus(StoplichtStatus.Rood); 
     this.Refresh(); 
    } 
    timer.Start(); 
} 

請注意,我使用了Windows窗體計時器,而不是System.Timers.TimerSystem.Threading.Timer;這是因爲事件必須發生在UI線程中,否則對Refresh的調用將失敗。

+0

工程就像一個魅力!謝謝! –