大家好!
我用windows.form.timer空間來計時,每隔5秒觸發一下getSN sub。但是視窗很卡。我就換成 system.timers.timer 了。但是經常按停止按鈕后,仍然不停,還在繼續elapsed 事件。看了網上說有多執行緒,看不懂,請大家幫忙。謝謝!
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
With Timer3
'.SynchronizingObject = Me
.AutoReset = False
.Enabled = True
.Interval = 5000
.Start()
End With
End Sub
Private Sub Timer3_Elapsed(sender As Object, e As ElapsedEventArgs) Handles Timer3.Elapsed
Timer3.Enabled = False
getSN(xrayWorkingDir) ‘處理程序sub
Timer3.Interval = 5000
Timer3.Enabled = True
End Sub
Private Sub btnDebug_Click(sender As Object, e As EventArgs) Handles btnStop.Click
Timer3.Stop()
btnStart.Enabled = True
btnStop.Enabled = False
lblStatus.Text = "Stopped"
lblStatus.BackColor = Color.Yellow
End Sub
uj5u.com熱心網友回復:
為什么要在Elapsed里面設定Enabled false和true 還有Interval設為true又啟用了
uj5u.com熱心網友回復:
讓elapsed 停止,等sub執行完再開始計時。用windows.form.timer就是可以的。uj5u.com熱心網友回復:
你在定時器關了定時器,然後又開了定時器,搞不懂你邏輯uj5u.com熱心網友回復:
給個建議怎么改唄?謝謝uj5u.com熱心網友回復:
With Timer3'.SynchronizingObject = Me
.AutoReset = False
.Enabled = True
.Interval = 5000
.Start()
End With
這些定時器設置多少秒,應該放在Load事件,開啟定時器,就是timer.start()關閉 timer.stop()
還有,你可以在這個方法xrayWorkingDir你這個方法第一行,馬上關閉定時器,因為你不知道五秒內能不能執行完畢,所以在xrayWorkingDir這個方法馬上timer.stop(),然後執行完畢timer.start(),,你不要在定時器方法內啟動或停止定時器
uj5u.com熱心網友回復:
Private Sub Timer3_Elapsed(sender As Object, e As ElapsedEventArgs) Handles Timer3.Elapsed' Timer3.Enabled = False
getSN(xrayWorkingDir)
' Timer3.Enabled = True
End Sub
在getSN里增加timer.stop() 和 timer.start() ?
我試試看
uj5u.com熱心網友回復:
還是不行,這個應該是多執行緒的什么原因在里面。還請大家幫忙。謝謝uj5u.com熱心網友回復:
大家早上好。請幫忙看一下怎么來改下代碼,謝謝uj5u.com熱心網友回復:
看你還有個btnstart,這是什么鬼?如果定時執行一個sub,用一個定時器就行了啊,load里初始化定時器,設定兩個按鈕,開始和暫停,開始按鈕里就是timer.start,暫停按鈕里就是timer.stop。這樣就行了啊轉載請註明出處,本文鏈接:https://www.uj5u.com/net/103388.html
標籤:VB.NET
上一篇:c#中怎樣通過控制元件來添加treeview中的節點?
下一篇:需要代碼訪問安全策略
