怎么停止用阻塞代码的子线程

如何停止用阻塞代码的子线程
本帖最后由 bigbillybear 于 2013-09-06 13:48:30 编辑
小弟写了个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