Bonjour, je d�veloppe un logiciel qui doit communiquer avec un autre logiciel, voici un peu la structure:
AppAccesRemote --(.net remoting)--> Application du client (ici c'est moi lol).
L'application du client est essentiellement divis�e en deux parties:
- Une classe CPontDonneesDistantes qui g�re le remoting et acc�de aux donn�es de AppAccesRemote (via le remoting). Lors de la connexion � l'objet remot� distant, cette classe fournit un delegate vers une de ces m�thodes qui servira � AppAccesRemote pour avertir CPontDonneesDistantes de changements. Tout ceci fonctionne bien.
Lorsque cette classe re�oit un avis de changements sur AppAccesRemote, elle lance un �v�nement qui sera catch� par une autre classe.
- Une form qui contient un objet CPontDonneesDistantes et qui s'abonne aux �v�nements de celle-ci. Elle doit donc recevoir les �v�nements lanc�s par cette derni�re
Ce qui ne fonctionne pas : lorsque CPontDonneesDistantes lance un �v�nement, ma form ne le catche jamais !
Voici un peu de code pour vous �clairer:
Voici CPontDonneesDistantes.h
Dans le constructeur de CPontDonneesDistantes, je me lie � mon objet remot�, puis je me connecte avec un utilisateur et mot de passe bidon. Je passe aussi un delegate qui pointe sur RecevoirNouveauPassage et sera ex�cut� quand AppAccesRemote s'apercevra d'un nouveau passage
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 [Serializable] public ref class CPontDonneesDistantes { public: CPontDonneesDistantes(); // Événement basé sur un delegate contenu dans une dll référencée event NouveauPassageHandler^ SurNouveauPassage; private: // Interface permettant d'accéder aux données remotées IDonneesCommunesOmny^ m_oDonneesCommunes; // Méthode sur laquelle un delegate pointera et qui sera appelée à partir de AppAccesRemote void RecevoirNouveauPassage(IPassage^ l_oPassage); public : property IDonneesCommunesOmny^ DonneesCommunes { IDonneesCommunesOmny^ get (); void set (IDonneesCommunesOmny^ oValue); } };
Voici la m�thode impl�ment�e qui lance un �v�nement et qui n'est pas catch� par ma form.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 IUtilisateur^ test = m_oDonneesCommunes->Connexion("test1", "test2", gcnew NouveauPassageHandler(this, &CPontDonneesDistantes::RecevoirNouveauPassage));
Enfin, le code dans le constructeur de ma form:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 void CPontDonneesDistantes::RecevoirNouveauPassage(IPassage^ l_oPassage) { SurNouveauPassage(l_oPassage); }
Voil�, j'esp�re ne pas vous avoir perdu ! Si vous avez besoin de plus d'infos, n'h�sitez pas � en demander. Je commence � �tre d�sesp�r�
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 m_oPontDonnees = gcnew CPontDonneesDistantes(); m_oPontDonnees->SurNouveauPassage += gcnew NouveauPassageHandler(this, &FenetrePrinc::RecevoirPassage);![]()
Partager