Bonjour à tous.

Je fais appel à votre aide concernant un problème que je rencontre dans l'élaboration de l'architecture du nouveau logiciel de ma société.

Pour faire simple, je possède une application WPF (FenetreWPF1) qui héberge un service WCF. Une autre application WPF (FenetreWPF2) se connecte au service WCF afin de transmettre des informations à FenetreWPF1. La transmission des informations entre le service et la fenêtre qui l'héberge est réalisée en déclarant un événement dans le service et en s'y abonnant depuis la fenêtre hôte. Voila pour la théorie, en pratique, ça ne fonctionne pas...

En effet il semblerait que l'abonnement de la fenêtre à l'événement du service ne soit pas pris en compte.

Voici ma classe implémentant l'interface du service WCF :

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
23
 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Single)]
    public class SenderService : IServiceCorrectionSender
    {
        public static event EventHandler<CorrectionReceivedEventArgs> CorrectionReceivedEvent;
 
        public void SendCorrection(Arg mt)
        {
            MessageBox.Show("Client connecté");
            var crea = new CorrectionReceivedEventArgs {Mt = mt};
 
            if(CorrectionReceivedEvent != null)
                CorrectionReceivedEvent(null, crea);
            else
                MessageBox.Show("Pas d'abonnement à l'évenement");
        }
    }
 
    public class CorrectionReceivedEventArgs : EventArgs
    {
        public string Sender;
        public Arg Mt;
    }
Et voici le code de ma classe créant l'instance du service et abonnant l'une de ses méthodes à l'événement levé par celui-ci.

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
 
public partial class App : Application
{
    private MainWindow window;
 
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        window = new MainWindow();
 
        ServiceHost serviceHost = new ServiceHost(typeof (SenderService));
        SenderService.CorrectionReceivedEvent += CorrectionReceived;
        serviceHost.Open();
    }
 
    private void CorrectionReceived(object sender, CorrectionReceivedEventArgs e)
    {
        window.AddEnvoi(e.Mt);
 
        MessageBox.Show("Correction received by App.xaml.cs");
    }
}
Lorsque l'application 2 tente de communiquer des informations à l'application 1, la MessageBox "Pas d'abonnement à l'évenement" est affichée...

Voyez - vous une erreur quelque part dans mon code?

Merci d'avance à tous ceux qui tenteront de m'aider!