C 倒計時 不要盲目選擇Timer

2022-02-11 17:24:08 字數 1657 閱讀 8189

最近閒來無事,寫了乙個倒計時的小例子玩,就是想看著毫秒跳動的快感,所以首當其衝的選擇了timer,於是把interval設定為1,於是定義timer1_tick方法,於是執行,於是我就不淡定了,毫秒跳動不正確:三位數字只是後兩位按照毫秒跳,第一位是按照秒跳的,難道1秒=100毫秒?我有些不淡定了。更蛋疼的是,秒錶的跳動比正常情況下要慢,正常情況的都10秒了,它在剛過7秒……

經過查資料發現,是timer的interval最小可以設定17-18,再小的話就會出現誤差,看來timer也滿足不了我了。沒辦法,我只能選擇執行緒,通過控制線程睡覺來控制倒計時……

果然,執行緒是可以的,執行介面如圖:

(設定總分鐘數)                    (正在倒計時)                    (倒計時結束)

後台**我是這樣寫的:

int timecount = 0;//

記錄倒計時總毫秒數

int isstop = 0;//

標示是否啟動/暫停的變數,0表示第一次初始化

private

void button1_click(object

sender, eventargs e)

isstop = 1;//啟動}

else

}public

void

counter()

catch

(threadabortexception)

}if (isstop != 2

) timecount -= 1

; thread.sleep(1);}}

catch //

處理異常關閉情況下的異常問題

}

private

void button2_click(object

sender, eventargs e)

//timer控制項的interval頻率值小於17時便會產生誤差,所有得到的倒計時秒數比普通的慢很多,當倒計時精確到毫秒時,則不適用用timer控制項。

//private void timer1_tick(object sender, eventargs e)

//

//timecount -= 10;

//}

//}

總結:1.倒計時如果是以秒為單位,可以選擇timer和執行緒來實現,如果以毫秒為單位,建議使用執行緒來實現。

2.使用執行緒時,如果要暫停,需要使用abort()方法終止執行緒,該方法是通過觸發threadabortexception異常來實現對執行緒的終止的,所以需要捕獲該異常,才能終止執行緒。所以     abort()引發的該異常時正常的。

暫時只想到了這兩種方法,不知道還有沒有其他的方法實現倒計時,希望大家推薦推薦……呵呵

C 實現窗體倒計時

最近在寫乙個小功能時腦袋一直轉不過彎,就是想實現彈出乙個窗體,然後提示 本窗體將在n秒後關閉!這個小功能,找了好些部落格,因為本人剛入門,大多都看不懂 煎熬了好幾天後終於以乙個簡單的辦法實現了 以下是關鍵 using system using system.collections.generic u...

C 如何使用倒計時

平時做程式的時候,經常會需要設計乙個延時觸發的事件,之前在網咖玩到只剩20分鐘的時候會彈出乙個餘額不足的提醒,那麼到底如何實現呢?餘額超過20分鐘繼續走下面的 proctimer1.interval convert.toint32 maxtime 60000 proctimer1.tick new ...

C語言 編寫倒計時程式

編寫乙個兩分鐘的倒計時。形如2 00 1 59 1 58 1 57 1 00 0 59 0 58 0 01 0 00 include include include using namespace std intmain return0 方法為將分和秒分別設定變數a b,即a b代表時間,對應的需要...