程式使用多個 Timer 控制項注意事項

http://zip.nvp.com.tw/forum.php?mod=viewthread&tid=3091&extra=page%3D7

每個定時器控制項,都有 Interval 屬性,指定定時器事件之間的毫秒數。除非禁止此屬性,否則定時器在大致相等的時間間隔中不斷接受事件(稱為 Timer 事件會更貼切)。
在為定時器控制項程式撰寫時,應考慮對 Interval 屬性的幾個限制:


  • 如果應用程式或其它應用程式正在進行對系統要求很高的作業─ 例如長循環、高強度的計算,或者正在存取磁碟機、網路或連接埠─ 則應用程式定時器事件的間隔,可能比 Interval 屬性指定的間隔長。
  • 間隔的取值可在 0 到 64,767 之間(包括這兩個數值),這意味著即使是最長的間隔,也不比一分鐘長多少(大約 64.8 秒)。
  • 間隔並不一定十分準確。要保證間隔準確,應在需要時才讓定時器檢查系統小時鐘,而不在內部追蹤積聚的時間。
  • 系統每秒產生 18 個計時信號─ 所以使用毫秒衡量 Interval 屬性,間隔實際的精確度也不會超過 18 分之一秒。

//資料來源 MSDN Library Visual Studio 6.0

1. 在程式中多個 timer 中寫迴圈, 很容因多個迴圈造成程式咬死, 因為迴圈會被互相插斷執行, 造成有些程式碼段無法執行,  不要預期每個迴圈會按照自己意思執行, 它不是 thread 替代功能, 這是很多工程師的大弊病. 要使用多個 timer 是可以, 請先瞭解上面說明, 但要寫出高效能程式很難.
2. 使用  thread  要善加規劃流程, thread 並未每個程式都適用, 用錯地方程式掛掉更快.
3. 不要在 thread 中設計迴圈而使用自由(free)輪詢方式, 查詢所需工作是否完成, 因為它會大量干擾其他 thread 工作(含 main thread), CPU 總是處在忙碌工作狀態.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值