Ik ben bezig met een client-server applicatie te maken met multithreading. Ik was begonnen in vb.NET 2003 maar heb die geimporteerd naar 2005. Alles lukt maar ik kan niet meer vanuit mijn thread een control aanspreken want dan krijg ik "Cross-thread operation not valid error".
ik start de thread:
ThreadListener = New Threading.Thread(AddressOf Listening)
ThreadListener.Start()
Private Sub Listening()
Try
DisplayConsole("Server ip: " & System.Net.IPAddress.Any.ToString)
TCPListener = New TcpListener(System.Net.IPAddress.Any, iPort)
TCPListener.Start()
Do
Dim client As New HostConnection(TCPListener.AcceptTcpClient)
AddHandler client.lineReceived, AddressOf HostMessage
DisplayConsole("newconnection found: waiting for log-in")
Loop Until bIsRunning
Catch ex As Exception
End Try
End Sub
Private Sub DisplayConsole(ByVal sMessage As String)
txtConsole.Text = txtConsole.Text & vbCrLf & sMessage
End Sub
Wanneer hij aan de lijn "txtConsole.Text = txtConsole.Text & vbCrLf & sMessage" zit sprint hij naar de catch. Het rare is dat hij in 2003 daar niet moeilijk over doet. Nu heb ik gekeken op de msdn site daar spreken ze over de backgroundworker. Maar die examples zijn zo chaotisch en het lukt me niet echt dat toe te passen. Je moet gebruik maken van delegates en invoke maar de voorbeelden begrijp ik niet compleet. bvb http://forums.microsoft.c...aspx?PostID=9756&SiteID=1
Weet iemand een duidelijk voorbeeld of een andere oplossing om mijn textbox te kunnen aanspreken via een andere thread?
ik start de thread:
ThreadListener = New Threading.Thread(AddressOf Listening)
ThreadListener.Start()
Private Sub Listening()
Try
DisplayConsole("Server ip: " & System.Net.IPAddress.Any.ToString)
TCPListener = New TcpListener(System.Net.IPAddress.Any, iPort)
TCPListener.Start()
Do
Dim client As New HostConnection(TCPListener.AcceptTcpClient)
AddHandler client.lineReceived, AddressOf HostMessage
DisplayConsole("newconnection found: waiting for log-in")
Loop Until bIsRunning
Catch ex As Exception
End Try
End Sub
Private Sub DisplayConsole(ByVal sMessage As String)
txtConsole.Text = txtConsole.Text & vbCrLf & sMessage
End Sub
Wanneer hij aan de lijn "txtConsole.Text = txtConsole.Text & vbCrLf & sMessage" zit sprint hij naar de catch. Het rare is dat hij in 2003 daar niet moeilijk over doet. Nu heb ik gekeken op de msdn site daar spreken ze over de backgroundworker. Maar die examples zijn zo chaotisch en het lukt me niet echt dat toe te passen. Je moet gebruik maken van delegates en invoke maar de voorbeelden begrijp ik niet compleet. bvb http://forums.microsoft.c...aspx?PostID=9756&SiteID=1
Weet iemand een duidelijk voorbeeld of een andere oplossing om mijn textbox te kunnen aanspreken via een andere thread?
[ Voor 5% gewijzigd door Verwijderd op 30-12-2006 18:24 ]