我需要在除主UI線程之外的另一個線程中運行倒計時器。因此我不能使用DispatcherTimer
,因爲它只存在於主線程中。因此,我需要在System.Timers.Timer
一些幫助 - 我無法找到如何在網絡上創建一個倒數計時器任何很好的例子..使用System.Timers.Timer的線程中的倒數計時器
這是我走到這一步:
Private void CountdownThread()
{
// Calculate the total running time
int runningTime = time.Sum(x => Convert.ToInt32(x));
// Convert to seconds
int totalRunningTime = runningTime * 60;
// New timer
System.Timers.Timer t = new System.Timers.Timer(1000);
t.Elapsed += (object sender, System.Timers.ElapsedEventArgs e) => totalRunningTime--;
// Update the label in the GUI
lblRunning.Dispatcher.BeginInvoke((Action)(() => {lblRunning.Content = totalRunningTime.ToString(@"hh\:mm\:ss");}));
}
標籤lblRunning
顯示倒計時值。
編輯:問題是我不知道如何在單獨的線程中製作倒數計時器並更新此線程的標籤!
你說你不能使用主線程,但爲什麼不呢?這聽起來像你想用計時器來更新用戶界面,爲什麼不使用'DispatcherTimer'?這幾乎是它的目的! –
@charles_mager由於應用程序的設計,我不能使用'DispatcherTimer' - 這不是我的決定:-( – MikaelKP
問題是*爲什麼*你不能使用它。你的應用程序的設計如何防止你使用它嗎?畢竟,它正是*你應該使用的工具 – Servy