在這裏,我將採用兩種線程方式開發倒計時功能,線程分別採用ThreadPool 和Thread。使用ThreadPool、Thread,需要先使用System.Threading空間。
開發功能:下班倒計時(假設每天下午5:30下班)
1.首先我們需要獲取離下班還有多長時間,這裏我們採用TimeSpan來計算時間差。
String ymd = DateTime.Now.ToString("yyyy-MM-dd");
DateTime end = DateTime.ParseExact(ymd + " 17:30:00","yyyy-MM-dd HH:mm:ss",null);
DateTime start = DateTime.Now;
TimeSpan ts = end - start;
2.倒計時功能實現
2.1 通過ThreadPool方式
ThreadPool.QueueUserWorkItem ((arg) =>
{
while(ts.Hours != 0 || ts.Minutes != 0 || ts.Seconds != 0){
//timeTextViewer 是窗體中TextView的名稱,我們將時間顯示在窗體上
timeTextViewer.Buffer.Text =
"離下班還剩 " + ts.Hours + " 小時 " + ts.Minutes + " 分鐘 " + ts.Seconds + " 秒"
Thread.Sleep(1000)
ts = ts.Add(new TimeSpan(0,0,-1))
}
})
2.2 通過Thread方式
//在窗體創建的函數中:
Thread thread = new Thread (TimerLeft)
thread.Start ()
//函數外,同一類中
private void TimerLeft(){
DateTime end = DateTime.ParseExact(ymd + " 17:30:00","yyyy-MM-dd HH:mm:ss",null)
DateTime start = DateTime.Now
TimeSpan ts = end - start
while(ts.Hours != 0 || ts.Minutes != 0 || ts.Seconds != 0){
timeTextViewer.Buffer.Text =
"離下班還剩 " + ts.Hours + " 小時 " + ts.Minutes + " 分鐘 " + ts.Seconds + " 秒"
Thread.Sleep(1000)
ts = ts.Add(new TimeSpan(0,0,-1))
}
}
完成後我們就可以運行我們的程序了。