Bonjour à tous,
Je réalise un programme de supervision d'automate qui utilise une connexion TCP pour communiquer.
Pour me connecter à l'automate j'utilise une connexion Asynchrone :
La CallBack associée à la connexion asynchrone répond correctement, mais dans cette CallBack je dois accéder à des variables situées dans l'instance de l'objet qui a appelé cette CallBack (bref, mon programme principal !).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //--- Client TCP m_TcpClient = new TcpClient(); m_TcpClient.SendTimeout = 100; m_TcpClient.ReceiveTimeout = 100; IPAddress ipAddress = IPAddress.Parse(AdresseIP); IPEndPoint remoteEP = new IPEndPoint(ipAddress, PortIP); //--- Connexion Asynchrone m_TcpClient.Client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), m_TcpClient.Client);
Le problème c'est qu'en principe (en tout cas dans les docs) la CallBackest toujours déclarée "static". SI je la laisse "static", je ne peux pas accéder à mes variables, sauf si elles sont elles-mêmes "static" !!
Alors j'ai osé, supprimer le "static" de la CallBack. A première vue, tout fonctionne correctement.
Quel est en fait le risque ? un appel récursif avec saturation de pile ?
J'attends vos idées.
Partager