16,554
社区成员
发帖
与我相关
我的任务
分享
Private Sub StartUnitProcessing(ByVal objIndex As Object)
Dim sckIndex As Integer = CInt(objIndex)
Try
UnitArray(sckIndex).ReceiveTimeout = intTimeout * 1000
If UnitArray(sckIndex).Receive() Then
......
Private UnitListen As TcpListener '商户连接侦听器
Private UnitListenThread As Thread '商户连接侦听线程
Private blnStopUnitListen As Boolean '停止侦听商户连接开关
Private UnitArray(MaxUnitThread - 1) As FeeSocketClass.Communication
'启动商户端侦听线程
Private Sub LoadUnitListener()
blnStopUnitListen = False
UnitListenThread = New Threading.Thread(AddressOf StartUnitListen)
UnitListenThread.Name = "商户端侦听进程"
UnitListenThread.Start()
End Sub
'商户端侦听线程
Private Sub StartUnitListen()
UnitListen.Start()
AddMessage("商户端侦听端口已启动.", , True)
Try
Do
Dim sckUnit As New FeeSocketClass.Communication(UnitListen.AcceptSocket)
Dim I As Integer
For I = 0 To MaxUnitThread - 1
If IsNothing(UnitArray(I)) Then
UnitArray(I) = sckUnit
ThreadPool.QueueUserWorkItem(New Threading.WaitCallback(AddressOf StartUnitProcessing), I)
Exit For
End If
Next
If I >= MaxUnitThread Then sckUnit.Close()
sckUnit = Nothing
Loop Until blnStopUnitListen = True
Catch e As Exception
If Not blnStopUnitListen Then
AddMessage("[商户端侦听线程出错]" & e.Message, KnownColor.Red, True)
RestartUnitListen()
Else
CloseUnitListen()
End If
End Try
End Sub
'关闭商户端侦听线程
Private Sub CloseUnitListen()
blnStopUnitListen = True
If Not IsNothing(UnitListen) Then
UnitListen.Stop()
UnitListen = Nothing
End If
End Sub
Private Sub RestartUnitListen()
CloseUnitListen()
AddMessage("商户侦听线程已关闭.将于5秒后重新启动 ...", , True)
Dim w As New WaitTimeClass.WaitTime
w.Wait(5000)
w = Nothing
LoadUnitListener()
End Sub