1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Lancement de l'attente asynchrone
Me.SocketServer.BeginAccept(AddressOf ConnectionAcceptCallback, Me.SocketServer)
Le deuxième argument sera passé à la fonction connexionCallback, lorsque celle ci sera appelée, à travers la propriété AsyncState de IAsyncResult. Le premier argument est un objet de type AsyncCallback. AsyncCallback est un délégué, qui est le terme en .NET pour désigner un pointeur de fonction. Le constructeur prend comme argument une fonction ayant cette signature :
Sub connexionCallback(Dim asyncResult As IAsyncResult)
Retenez bien cette signature car elle servira pour toutes les fonctions de rappel des autres fonctions asynchrones. La fonction connexionCallback s'exécute dans un Thread séparé de celui de l'application principale (thread lancé par le système). Cette fonction prend comme argument un type IAsyncResult. L'interface IAsyncResult nous permet de retrouver l'objet que nous avons passé à la fonction BeginAccept tel qu'il était à travers sa propriété AsyncState.
object asyncResult.AsyncState
2. Mettre fin à l'attente
Pour finir l'attente d'une connexion et pour finir d'accepter la connexion d'un client vous devez appeler la fonction EndAccept.
Fonction de rappel pour la connexion d'un client
Private Sub connexionAcceptCallback(ByVal asyncResult As IAsyncResult)
SocketClient = SocketServer.EndAccept(asyncResult)
End Sub |
Partager