Guten Tag Leute
Ich habe mir per TCP Server eine Komunikation gebaut, wo ich von Meinem Handy aus daten ins Programm erhalte. Um genau zu sein kommen Barcodes in Textform an.
ICh habe nun versucht mir eine Barcodeklasse zu schreiben inder ich dann die Verschiedenen typen beandeln möchte.
Bei TCP habe ich aber das Problem das ich gerne Die Klasse "Öffnen/Starten" sowie "Schließen/Stoppen" möcte, um in einem anderen Fenster dann mit dem Handy zu komunizieren.
Desalb habe ich mich auch für einen Background Thread entschieden.
Löse ich einen Thread.abort aus, eibt jedoch alles eingefroren. Und jetzt bräuchte ich eure Hilfe. Wieso macht er das?
Ich habe mir per TCP Server eine Komunikation gebaut, wo ich von Meinem Handy aus daten ins Programm erhalte. Um genau zu sein kommen Barcodes in Textform an.
ICh habe nun versucht mir eine Barcodeklasse zu schreiben inder ich dann die Verschiedenen typen beandeln möchte.
Bei TCP habe ich aber das Problem das ich gerne Die Klasse "Öffnen/Starten" sowie "Schließen/Stoppen" möcte, um in einem anderen Fenster dann mit dem Handy zu komunizieren.
Desalb habe ich mich auch für einen Background Thread entschieden.
Löse ich einen Thread.abort aus, eibt jedoch alles eingefroren. Und jetzt bräuchte ich eure Hilfe. Wieso macht er das?
VB.NET-Quellcode
- Imports System.Net.Sockets
- Imports System.IO
- Imports System.Net
- Imports System.Threading
- Class Barcode_Scanner
- Public Event ConnWaiting()
- Public Event ConnSucess()
- Public Event ConnClosed()
- Public Event CodeAceppted(ByVal Codetext As String)
- Public Event Err(ByVal Errortext As String)
- Dim Trd_TCP_Server As Thread = New Thread(Sub() TCP_Server()) With {.IsBackground = True, .Name = "TCP_Server_Barcode"}
- Public Sub StartServer()
- Select Case 1
- Case 1
- Trd_TCP_Server = New Thread(Sub() TCP_Server()) With {.IsBackground = True, .Name = "TCP_Server_Barcode"}
- Trd_TCP_Server.Start()
- End Select
- End Sub
- Sub StopServer()
- Select Case 1
- Case 1
- If Trd_TCP_Server IsNot Nothing AndAlso Trd_TCP_Server.IsAlive Then
- Trd_TCP_Server.Abort()
- Trd_TCP_Server = Nothing
- RaiseEvent ConnClosed()
- End If
- End Select
- End Sub
- Sub TCP_Server()
- Dim server As TcpListener
- server = Nothing
- server = New TcpListener(9999)
- server.Start()
- Dim bytes(1024) As Byte
- Dim data As String = Nothing
- Try
- While True
- RaiseEvent ConnWaiting()
- ' Perform a blocking call to accept requests.
- ' You could also user server.AcceptSocket() here.
- Dim client As TcpClient = server.AcceptTcpClient()
- RaiseEvent ConnSucess()
- data = Nothing
- ' Get a stream object for reading and writing
- Dim stream As NetworkStream = client.GetStream()
- Dim i As Int32
- ' Loop to receive all the data sent by the client.
- i = stream.Read(bytes, 0, bytes.Length)
- While (i <> 0)
- ' Translate data bytes to a ASCII string.
- data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
- RaiseEvent CodeAceppted(data)
- i = stream.Read(bytes, 0, bytes.Length)
- End While
- ' Shutdown and end connection
- client.Close()
- End While
- Catch ex As ThreadAbortException
- server.Stop()
- Catch e As SocketException
- RaiseEvent Err(e.Message)
- Finally
- server.Stop()
- RaiseEvent ConnClosed()
- End Try
- End Sub 'Main
- End Class