台灣最大程式設計社群網站
線上人數
1600
 
會員總數:246323
討論主題:189852
歡迎您免費加入會員
討論區列表 >> VB.NET >> winform 加入 2個timer 會干擾
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
winform 加入 2個timer 會干擾
價值 : 100 QP  點閱數:208 回應數:6
樓主

MStone Lin
門外漢
0 104
2036 137
發送站內信


請問

如何要在winform 加入2個timer
然後不會互相干擾
第1個timer 用來顯示時間(每隔1秒)
第2個timer 用來讀晶片卡(每隔3秒)

第2個timer啟動時 第1個timer就會間隔3秒才變化

上網查了一下 因為都是windows.timer導至

請問
有什麼辦法 設定不互相影響,
改system.timer ??

還是
用什麼元件分開? group? tab?







搜尋相關Tags的文章: [ winform ] , [ timer ] , [ 多個 ] ,
本篇文章發表於2021-03-22 17:39
1樓
回應

P陳
檢舉此回應
在 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樓
回應

P陳
檢舉此回應
Timer1 與 Timer2 本來就是分開運作的...................
請將您會互相干擾的程式放上來
本篇文章回覆於2021-03-23 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

J.C
捐贈 VP 給 J.C 檢舉此回應
首先要先理解 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樓
回應

shopping
捐贈 VP 給 shopping 檢舉此回應
4 樓正解 +1

(這網站,好像沒有直接按讚的地方?)
本篇文章回覆於2021-03-31 11:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.