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
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);
	}
};
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
 
IUtilisateur^ test =  m_oDonneesCommunes->Connexion("test1", "test2", gcnew NouveauPassageHandler(this, &CPontDonneesDistantes::RecevoirNouveauPassage));
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
3
4
5
 
void CPontDonneesDistantes::RecevoirNouveauPassage(IPassage^ l_oPassage)
{
	SurNouveauPassage(l_oPassage);	
}
Enfin, le code dans le constructeur de ma form:
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);
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�