Hi,
ich habe ein Problem mit meinem TelnetClient, den ich gerade schreibe, und zwar hängt er sich beim empfangen von nachrichten immer auf.
Hier wäre die meldung:
Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement RichTextBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
Fehler kommt in ZEILE 50
Mein Code:
Wie kann ich den Fehler beheben, bzw. was ist falsch? Verstehe ich nicht ganz...
mfg
gfc
ich habe ein Problem mit meinem TelnetClient, den ich gerade schreibe, und zwar hängt er sich beim empfangen von nachrichten immer auf.
Hier wäre die meldung:
Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement RichTextBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
Fehler kommt in ZEILE 50
Mein Code:
VB.NET-Quellcode
- Imports System.Net
- Imports System.Net.Sockets
- Imports System.Text
- Public Class Netduino_Control
- Dim remoteIPAddress As IPAddress
- Dim ep As IPEndPoint
- Dim tnSocket As Socket
- Private t As New Threading.Thread(AddressOf Listen)
- Dim Command As String = ""
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Call Connect(TextBox1.Text, TextBox2.Text)
- End Sub
- Public Sub Connect(ByRef dipaddress As String, ByVal port As String)
- remoteIPAddress = IPAddress.Parse(dipaddress.Trim)
- ep = New IPEndPoint(remoteIPAddress, CType(port.Trim, Integer))
- tnSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
- Try
- tnSocket.Connect(ep)
- Catch oEX As SocketException
- MsgBox(oEX.ToString)
- Exit Sub
- End Try
- Try
- Wait(3000)
- t.Start()
- Catch ex As Exception
- End Try
- End Sub
- Public Sub Listen()
- Dim RecvString As String = String.Empty
- Dim NumBytes As Integer = 0
- Dim RecvBytes(255) As [Byte]
- Do While tnSocket.Connected = True
- Do
- NumBytes = tnSocket.Receive(RecvBytes, RecvBytes.Length, 0)
- RecvString = RecvString + Encoding.ASCII.GetString(RecvBytes, 0, NumBytes)
- Loop While NumBytes = 256
- RichTextBox1.Text = RecvString & vbCrLf
- Wait(1000)
- Loop
- End Sub
- Private Sub Wait(ByVal PMillseconds As Integer)
- Dim TimeNow As DateTime
- Dim TimeEnd As DateTime
- Dim StopFlag As Boolean
- TimeEnd = Now()
- TimeEnd = TimeEnd.AddMilliseconds(PMillseconds)
- StopFlag = False
- While Not StopFlag
- TimeNow = Now()
- If TimeNow > TimeEnd Then
- StopFlag = True
- End If
- Application.DoEvents()
- End While
- ' Cleanup
- TimeNow = Nothing
- TimeEnd = Nothing
- End Sub
- Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
- Dim SendBytes As [Byte]() = Encoding.ASCII.GetBytes(TextBox3.Text & vbCrLf)
- tnSocket.Send(SendBytes, SendBytes.Length, SocketFlags.None)
- End Sub
Wie kann ich den Fehler beheben, bzw. was ist falsch? Verstehe ich nicht ganz...
mfg
gfc