![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 MStone Lin ![]()
![]() |
請問 如何要在winform 加入2個timer 然後不會互相干擾 第1個timer 用來顯示時間(每隔1秒) 第2個timer 用來讀晶片卡(每隔3秒) 第2個timer啟動時 第1個timer就會間隔3秒才變化 上網查了一下 因為都是windows.timer導至 請問 有什麼辦法 設定不互相影響, 改system.timer ?? 還是 用什麼元件分開? group? tab? |
1樓 |
在 timer2 時改變 timer1 的 interval
sub timer2_tick() timer1.interval= 3000 <--- 將 timer1 改成3000 即可
本篇文章回覆於2021-03-22 21:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
MStone Lin ![]() |
回P陳
timer1.interval= 3000 <--- 將 timer1 改成3000 即可 這樣不就每3秒才變化... 我想要的是 timer1 是顯示當下的時間(每隔1秒)...
本篇文章回覆於2021-03-23 08:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓 |
Timer1 與 Timer2 本來就是分開運作的...................
請將您會互相干擾的程式放上來
本篇文章回覆於2021-03-23 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
首先要先理解 WinForm 的 Timer 是使用 main thread 在執行
所以無論你建立了多少個 Timer,或是把他們放在不同的 GroupPanel、Tab 都還是一樣使用 main thread 執行 所以當你 Timer2 中執行的代碼需要花較多時間,或是具有 block 特性的話,那就會卡住 main thread,導致 Timer1 沒辦法照時執行 這種情況下改用 System.Timers.Timer 、 System.Threading.Timer 或直接使用 thread 都可以解決您的問題 但要注意的是!在其他 thread 的代碼不能 (不應該) 直接修改 UI 上的元件 所以如果您改用其他 Timer 的話,如果有需要更新畫面上的資料的話,請記得要使用 Control.Invoke()
本篇文章回覆於2021-03-24 15:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
4 樓正解
本篇文章回覆於2021-03-25 13:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
4 樓正解 +1
(這網站,好像沒有直接按讚的地方?)
本篇文章回覆於2021-03-31 11:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |