2012-04-12 58 views
2

我正在使用DispatchTimer每秒做一些事情,我該如何讓它做一些設定的時間量說1分鐘或2分鐘?我是否需要嵌套的DispatcherTimer?我怎樣才能讓一個計時器最後一分鐘然後停止

我的代碼如下

System.Windows.Threading.DispatcherTimer dt = new System.Windows.Threading.DispatcherTimer(); 

    private void StartButton_Click(object sender, RoutedEventArgs e) 
    { 
     TimeSpan interval; 
     interval = (TimeSpan)intervalPicker.Value; 
     dt.Interval = interval; 
     dt.Tick += new EventHandler(dt_Tick); 
     dt.Start(); 
    } 

    void dt_Tick(object sender, EventArgs e) 
    { 
     //Do Something 
    } 

我將不勝感激,如果你能幫助我的感謝。

回答

5

使用Stopwatch類:

Stopwatch sw = new Stopwatch(); 

private void StartButton_Click(object sender, RoutedEventArgs e) 
{ 
    sw.Start(); 
    ... 
} 

void dt_Tick(object sender, EventArgs e) 
{ 
    // stops the timer after 66 seconds 
    if(sw.ElapsedMilliseconds/1000 > 66) 
    { 
     dt.Stop(); 
     sw.Reset(); 
    }   
} 
+3

這是一個壞主意。如果定時器啓動,比如在我們將時鐘設置回夏令時之前三秒鐘,那麼定時器將運行超過一個小時。如果它在時鐘提前設置之前啓動,那麼定時器運行時間不到一分鐘。如果用戶改變時間,可能會發生同樣的事情。啓動計時器時最好啓動一個「秒錶」,然後檢查「Elapsed」屬性。 – 2012-04-12 22:01:21

+0

@Jim:謝謝,我完全同意...... – thumbmunkeys 2012-04-12 22:05:30

+0

完美的謝謝你們 – 2012-04-12 22:16:57

相關問題