如果我在4秒之前沒有收到任何東西,我通過一個COM端口發送數據,並以4000間隔開始我的定時器以發回消息。定時器在停止一次後不重新啓動
{負載}
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[...]
SendCard(0)
[...]
End Sub
{SendCard子} 我通過設置屬性 「LastCommand」,其通過所述端口發送數據發送通過該Sub將需要的信息。
Private Sub SendCard(ByVal cardIndex As Integer)
If cardIndex < Setting.Machine.Cards.Length Then
'Calling LastCommand's Set()
LastCommand = "*" & Setting.Machine.Cards(cardIndex) & ": STRQ" & ControlChars.CrLf
Else
'Blah blah...
End If
End Sub
該屬性發送數據並啓動計時器。
Public Property LastCommand() As String
Get
Return lastCommandString
End Get
Set(ByVal value As String)
lastCommandString = value
MainCOMSerialPort.Write(value)
ResponseTimer.Start()
End Set
End Property
當我收到答案時,我停下計時器,然後詢問下一張卡的信息。
Private Sub MainCOMSerialPort_DataReceived(...)
[...]
ResponseTimer.Stop() 'After this stop it does not trigger the Tick event any longer.
SendCard(Array.IndexOf(Setting.Machine.Cards, CardString) + 1) 'Sending the next card
[...]
End Sub
Tick事件的第一張牌
Private Sub ResponseTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ResponseTimer.Tick
'MessageBox.Show("No Respone Yet")
LastCommand = LastCommand
End Sub
所以在問我的第一個命令,每4秒,直到我得到的回報的東西工作正常,但是當我開始了與第二個命令定時器不勾選。
我正在使用.NET 4.0和{Windows.Forms.Timer},我用Timers.Timer嘗試過,並沒有工作,要麼我不明白爲什麼它不會重新開始。
我已經設法使它通過使用System.Timers.Timer工作我想我第一次做錯了什麼。 –