怎么停止用阻塞代码的子线程
如何停止用阻塞代码的子线程
小弟写了个TCPIP服务器程序,用一个子线程等待客户端连接,一旦客服端连接进来,就再分配一个子线程接受数据,但是我发现如果客户端网线被拔了,再连接进来,服务器会再次给这个客户端分一个子线程,由于处理客户端的子线程使用了阻塞语句networkStream.Read,所以abort无法停止这个线程,请问大家有什么好主意。
这是等待连接的子线程,其实我也停不下来,除非用serverSocket.stop捕捉错误出去
这是接受数据的子线程
小弟写了个TCPIP服务器程序,用一个子线程等待客户端连接,一旦客服端连接进来,就再分配一个子线程接受数据,但是我发现如果客户端网线被拔了,再连接进来,服务器会再次给这个客户端分一个子线程,由于处理客户端的子线程使用了阻塞语句networkStream.Read,所以abort无法停止这个线程,请问大家有什么好主意。
这是等待连接的子线程,其实我也停不下来,除非用serverSocket.stop捕捉错误出去
Try
'阻塞进程,用标志位为也没用
Do While True
clientSocket = serverSocket.AcceptTcpClient()
myWaitData = New Thread(AddressOf WaitData)
myWaitData.Start(clientSocket)
Loop
Catch ex As Exception
End Try
这是接受数据的子线程
Private Sub WaitData(ByVal inClientSocket As TcpClient)
Dim clientSocket As TcpClient
clientSocket = inClientSocket
Dim infiniteCounter As Integer
Dim bytesFrom(10024) As Byte
Dim mybytes() As Byte
requestCount = 0
'for做while循环模式
For infiniteCounter = 1 To 2
infiniteCounter = 1
Try
Dim networkStream As NetworkStream = clientSocket.GetStream()
networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize))
Catch ex As Exception
infiniteCounter =2