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 :

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);
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 !).

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.