Hi,
hm habe mir deinen Code jetzt mal etwas genauer angesehen. Aber irgendwie kann ich damit nciht wirklich viel anfangen.
Zum einen was bringt die Methode "invoke" ??
Kann es vielleicht daran liegen?
Ich poste hier nochmal teile meines Codes, vielleicht kannst du mir dann erklären bzw zeigen woran es liegt.
Zuerst die Methode um mich mit einem Server zu verbinden
Bzw nen Teil davon, der Restliche Teil ist egal
Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MenuItem3.Click
Try
host = Dns.Resolve(konfig.text_Server.Text)
ip = host.AddressList(0)
EPClient = New IPEndPoint(ip, 6668)
Client = New Socket(AddressFamily.InterNetwork, SocketType.Stream, _
ProtocolType.Tcp)
tEmpfangen = New Thread(AddressOf Daten_Empfangen)
Client.Connect(EPClient)
status = True
tEmpfangen.Start() So und jetzt die methode Daten_Empfangen die über den Thread tEmpfangen läuft.
Public Sub Daten_Empfangen()
While status = True
Dim bytes(1024) As Byte
Dim sendbytes(1024) As Byte
Dim recv As String
Dim buffer As String
Dim i As Integer
Dim array As String()
Dim position As Integer
Client.Receive(bytes)
recv = Encoding.ASCII.GetString(bytes)
'MainAusgabe.rich_Ausgabe.AppendText(recv)
array = recv.Split(vbCrLf)
For i = 0 To array.GetUpperBound(0)
buffer = array(i)
position = InStr(buffer, "PING :") ' Ping Pong
If position > 0 Then
buffer = buffer.Substring(6)
buffer = "PONG :" + buffer + vbCrLf
sendbytes = Encoding.ASCII.GetBytes(buffer)
Client.Send(sendbytes)
MainAusgabe.rich_Ausgabe.AppendText("Ping? Pong!")
End If 'Ping Pong Ende
position = InStr(buffer, "ERROR") ' Error Nachricht
If position > 0 Then
MainAusgabe.rich_Ausgabe.AppendText(buffer + vbCrLf)
End If 'Error Nachricht Ende
position = InStr(buffer, " 37") ' Message of the
' Day
If position > 0 Then
position = InStr(buffer, ":-")
buffer = buffer.Substring(position)
MainAusgabe.rich_Ausgabe.AppendText(buffer + vbCrLf)
End If ' Message of the Day Ende
position = InStr(buffer, "JOIN") ' Channel joinen
If position > 0 Then
If channelanzahl < 11 Then
position = InStr(buffer, ":#")
buffer = buffer.Substring(position)
AddChannel()
'Channels(channelanzahl) = New Channel
'Channels(channelanzahl).MdiParent = Me
'Channels(channelanzahl).Text = buffer
'Channels(channelanzahl).Visible = True
'channelanzahl += 1
Else
MainAusgabe.rich_Ausgabe.AppendText("Maximale Channel" & _
"Anzahl erreicht")
End If
End If ' Channel joinen ende
Next
bytes.Clear(bytes, 0, 1024)
Dim a As Integer = sendbytes.Length
sendbytes.Clear(sendbytes, 0, a)
recv = Nothing
End While
End SubWie du siehst ist habe ich nur einmal die Methode AddChannel() aufgerufen. Hier ist auch das Problem!!
So und nun die Methode AddChannel
Public Sub AddChannel()
Channels = New Channel
Channels.MdiParent = Me
Channels.Visible = True
'Channels.Show()
End Sub |