471,088 Members | 1,323 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,088 software developers and data experts.

Thread in VB.NET won't stop (w/code)

I have a windows application that does not stop running whenever the
application exits.

Could someone fill me in on what I am doing wrong?

Here is the relevant code:
=================================
Private m_thTCP As Thread
Private m_listener As TcpListener

Public Sub New()
InitializeComponent() ' This call is required by the Windows Form
Designer.
m_thTCP = New Thread(AddressOf TCPServer)
ThreadStart()
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
ThreadStop()
End Sub

Private Sub Restart_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles RestartButton.Click
ThreadRestart()
End Sub

Private Sub ThreadStop() ' Stopping TCP Listener Service
Try
If (m_thTCP.ThreadState <ThreadState.Stopped) Then
Dim i As Int16 = 0
m_listener.Stop()
Application.DoEvents()
Thread.Sleep(200)
While ((i < 100) And (m_thTCP.ThreadState <ThreadState.Stopped))
' gives thread 5 secs to stop!
m_thTCP.Abort()
Application.DoEvents()
Thread.Sleep(50)
i += 1
End While
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
Console.WriteLine("ThreadState is {0}", m_thTCP.ThreadState.ToString())
m_thTCP = Nothing
End Try
End Sub

Public Sub ThreadRestart() ' Restarting TCP Listener Service
Try
ThreadStop()
m_thTCP = New Thread(AddressOf TCPServer)
ThreadStart()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub ThreadStart()
Try
m_thTCP.Start()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub TCPServer()
Try ' Starting TCP Listener from thread
m_listener = New TcpListener(IPAddress.Any, m_port)
m_listener.Start()
While True
Dim client As TcpClient = m_listener.AcceptTcpClient()
' Waits until data is available on the network
Dim stream As NetworkStream = client.GetStream()
Dim bytes(client.ReceiveBufferSize) As Byte
stream.Read(bytes, 0, CInt(client.ReceiveBufferSize))
Dim data As String = Encoding.ASCII.GetString(bytes)
data = data.TrimEnd(data.Substring(data.Length - 1))
If (data.Substring(3) <String.Empty) Then
Dim item As String = data.Substring(3)
If (item <"") Then
Console.WriteLine("Data Read: {0}", item)
End If
End If
stream.Close()
client.Close()
End While
Catch ex2 As SocketException
Console.WriteLine("SocketException: {0}", ex2)
Catch ex1 As ThreadAbortException ' dismiss this one
Exit Sub
Catch ex As Exception
MsgBox(ex.Message)
Finally
Try
m_listener.Stop()
Catch ex As Exception ' Throws Exception if it never was opened
End Try
End Try
End Sub
Jun 27 '08 #1
0 1185

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by Harald Armin Massa | last post: by
2 posts views Thread by Matt | last post: by
14 posts views Thread by Jon W | last post: by
51 posts views Thread by Hans | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.