PB invoke pour socket asynchrone
Bonjour,
je travaille actuellement sur une application client/serveur faisant appel aux socket en mode asynchrone.
concernant les sockets, ca devrait aller. la ou je peche c'est avec le "invoke".
cote du socket serveur, je le connecte avec "Bind" et "Listen" puis je le met en attente d'une connection client avec "BeginAccept". la fin de la connection client se fait dans un autre thread avec "EndAccept", a ce momment la j'aimerais mettre a jour un textbox sur ma fenetre principale. cette fonction s'executant dans un autre thread je ne peux pas le faire directement.
je dois donc utiliser le "invoke". mais au moment ou je l'appel j'ai l'erreur 'Impossible d'appeler Invoke ou BeginInvoke sur un contrôle tant que le handle de fenêtre n'a pas été créé.'.
mon code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Public Sock_SERVEURlisten As Socket
Public Sock_SERVEURclient As Socket
Delegate Function SERVEUR_AddConnection_delegate()
Public SERVEUR_AddConnection As SERVEUR_AddConnection_delegate = AddressOf SERVEUR_AddConnection_src
Function SERVEUR_Connection(ByVal AdresseIP As String, ByVal Port As Integer)
Dim SERVEUR_ep As IPEndPoint
Sock_SERVEURlisten = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
SERVEUR_ep = New IPEndPoint(IPAddress.Parse(AdresseIP), Port)
Sock_SERVEURlisten.Bind(SERVEUR_ep)
Sock_SERVEURlisten.Listen(1)
Sock_SERVEURlisten.BeginAccept(AddressOf SERVEUR_NouvelleConnection, Sock_SERVEURlisten)
Form1.txt_serveur.Text = Form1.txt_serveur.Text & "SERVEUR en attente de connection sur " & AdresseIP & " : " & Port & vbCrLf
End Function
Function SERVEUR_NouvelleConnection(ByVal asyncResult As IAsyncResult)
Sock_SERVEURclient = Sock_SERVEURlisten.EndAccept(asyncResult)
Form1.txt_serveur.Invoke(SERVEUR_AddConnection, Nothing)
End Function
Function SERVEUR_AddConnection_src()
Form1.txt_serveur.Text = Form1.txt_serveur.Text & "Nouvelle connection" & vbCrLf
End Function |
l'erreur se produit sur la ligne ou j'appelle la fonction "invoke"
voila, si quelqu'un peut m'aider, c'est la 1ere fois que je suis confronter aux probleme de multi-thread...