线程池中threading.timer的使用有关问题?
线程池中threading.timer的使用问题??急
我做的是一个自动搜集资料的系统。系统运行后启动timer,当接收到数据时加入线程池,调用代理处理数据,处理完成后需要发送一个信息至设备,让控制设备启动,间隔2S后要回收对设备的控制。
具体代码如下:请各位帮忙看看!!如能解决高分回馈,谢谢大家!
加入线程池:
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim strin, strtwo As String
Try
strin = Me.AMS.Input
Catch ex As Exception
SaveErrorLog("ComPorts connection error! " & ex.Message & " " & Now, 20)
End Try
Label4.Text = CInt(Label4.Text.Trim) + 1
Dim callback As WaitCallback
callback = New WaitCallback(AddressOf Me.ThreadProc)
If strin <> "" Then
strin = strin.Trim
If ThreadPool.QueueUserWorkItem(callback, strin & LineStation(Cbst, Cbline) & "N") Then
Me.LBlog.Items.Insert(0, strin & " " & DateTime.Now())
Thread.Sleep(1000)
End If
End If
End Sub
代理函数:
Public Sub ThreadProc(ByVal stateInfo As Object)
If SaveDB(SaveSnDb) Then
Dim tcallback As TimerCallback
tcallback = New TimerCallback(AddressOf Me.control_line)
Dim dtime As Integer
Dim pTime As Integer
dtime = 0
pTime = 0
Dim atimer As New Threading.Timer(tcallback, Nothing, dtime, pTime)
Out(&H378, Val(5)) ‘控制机器信号
dtime = 1000
atimer.Change(dtime, pTime)
Out(&H378, Val(0)) ’回收控制
atimer.Dispose()
End If
End Sub
------解决方案--------------------
请给出什么错误,谢谢
------解决方案--------------------
恭喜樓主,解決了問題,蹭點分
我做的是一个自动搜集资料的系统。系统运行后启动timer,当接收到数据时加入线程池,调用代理处理数据,处理完成后需要发送一个信息至设备,让控制设备启动,间隔2S后要回收对设备的控制。
具体代码如下:请各位帮忙看看!!如能解决高分回馈,谢谢大家!
加入线程池:
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim strin, strtwo As String
Try
strin = Me.AMS.Input
Catch ex As Exception
SaveErrorLog("ComPorts connection error! " & ex.Message & " " & Now, 20)
End Try
Label4.Text = CInt(Label4.Text.Trim) + 1
Dim callback As WaitCallback
callback = New WaitCallback(AddressOf Me.ThreadProc)
If strin <> "" Then
strin = strin.Trim
If ThreadPool.QueueUserWorkItem(callback, strin & LineStation(Cbst, Cbline) & "N") Then
Me.LBlog.Items.Insert(0, strin & " " & DateTime.Now())
Thread.Sleep(1000)
End If
End If
End Sub
代理函数:
Public Sub ThreadProc(ByVal stateInfo As Object)
If SaveDB(SaveSnDb) Then
Dim tcallback As TimerCallback
tcallback = New TimerCallback(AddressOf Me.control_line)
Dim dtime As Integer
Dim pTime As Integer
dtime = 0
pTime = 0
Dim atimer As New Threading.Timer(tcallback, Nothing, dtime, pTime)
Out(&H378, Val(5)) ‘控制机器信号
dtime = 1000
atimer.Change(dtime, pTime)
Out(&H378, Val(0)) ’回收控制
atimer.Dispose()
End If
End Sub
------解决方案--------------------
请给出什么错误,谢谢
------解决方案--------------------
恭喜樓主,解決了問題,蹭點分