locked
Dans une application Silverlight: Comment générer un evenement lors de la fermeture de l'application. RRS feed

  • Question

  • Bonjour,

    Dans une application Silverlight: Comment  intercepter  un evenement lors de la fermeture de l'application afin d'y rajouter du code (tel l'evenement closing en programmation  Windows forms.)

    Je souhaite en cas de fermeture de la fenêtre principale de l'application Silverlight que je développe passer à 0 le flag: OnLine d'une table de la base de donnée sql server. D'où la nécessité d'intercepter l'évenement de fermeture de l'application.

    D'avance Merci

    P.S.


    ps


    mardi 7 octobre 2014 13:28

Réponses

  • Bonjour,

    Vous pouvez créer une propriété nom dans votre App.xaml.cs

     public string Nom { get; set; }

    Et lui donner une valeur dans le mainPage.xaml.cs

    ((App)Application.Current).Nom = "toto";

    Cordialement

    Cédric

    • Marqué comme réponse SEVRY1444 mercredi 8 octobre 2014 12:54
    mercredi 8 octobre 2014 09:24
  • Bonjour,

    Avez vous essayé d'utilisé la méthode App_Exit dans le fichier App.xaml.cs ?

     private void Application_Exit(object sender, EventArgs e) {}

    Cordialement

    Cédric

    • Marqué comme réponse SEVRY1444 jeudi 9 octobre 2014 13:02
    mercredi 8 octobre 2014 07:56
  • Je pense que c'est un pb de design. C'est comme pour une appli Web (ce qu'est d'ailleurs une appli Silverlight), vous ne pouvez savoir exactement combien de personne sont sur votre site en même temps.

    Il faut mettre en place un système de timeout côté serveur genre :

    L'utilisateur fait une action quelconque dans l'appli, on enregistre côté serveur l'heure de cette dernière action. Et un utilisateur est considéré comme déconnecté si cette heure est antérieure à 20mn.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse SEVRY1444 jeudi 9 octobre 2014 13:01
    jeudi 9 octobre 2014 12:06

Toutes les réponses

  • Bonjour,

    J'ai déplacé votre question sur le forum approprié: MSDN->Silverlight France pour pouvoir obtenir une résolution de votre souci.

    Cordialement,

    Nina

                    


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mercredi 8 octobre 2014 07:03
    Modérateur
  • Bonjour,

    Avez vous essayé d'utilisé la méthode App_Exit dans le fichier App.xaml.cs ?

     private void Application_Exit(object sender, EventArgs e) {}

    Cordialement

    Cédric

    • Marqué comme réponse SEVRY1444 jeudi 9 octobre 2014 13:02
    mercredi 8 octobre 2014 07:56
  • Bonjour,

    Merci de votre réponse.

    Par contre depuis MainPage.cs je n'arrive pas à passer un argument à la fonction WebSetOnLineAsync (le nom de la personne connectée au moment de la fermeture de l'application) lorsque j'implémente la fonction WebSetOnLineAsync dans App_Exit :

    private void Application_Exit(object sender, EventArgs e)

    {

                   ...

                  leproxy.WebSetOnLineAsync(Nom,0);   //Reset du flag OnLine dans la base de donnée pour le client

    }

    De même que comme il s'agit de Silverlight donc dois-je écrire la fonction WebSetResetOnLineCompleted dans la page App.xaml.cs .

    D'avance merci

    Cordialement

    P.S.


    ps


    • Modifié SEVRY1444 mercredi 8 octobre 2014 08:57
    mercredi 8 octobre 2014 08:56
  • Bonjour,

    Vous pouvez créer une propriété nom dans votre App.xaml.cs

     public string Nom { get; set; }

    Et lui donner une valeur dans le mainPage.xaml.cs

    ((App)Application.Current).Nom = "toto";

    Cordialement

    Cédric

    • Marqué comme réponse SEVRY1444 mercredi 8 octobre 2014 12:54
    mercredi 8 octobre 2014 09:24
  • Vous avez toujours l'event Exit de l'objet Application (fichier App.xaml.cs).


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    jeudi 9 octobre 2014 07:36
  • Bonjour,

    Le probleme du passage de paramêtre est résolue.

    Avec le pas le pas je peux suivre l'exécution des instructions inclues dans l'event exit:

    private void Application_Exit(object sender, EventArgs e)

    {

                   ...

                  leproxy.WebSetOnLineAsync(Nom,0);   //Reset du flag OnLine dans la base de donnée pour le client

    }

    Toutefois la fonction WebSetOnline  inclue dans les web services n'est pas éxécutée car l'application est refermée immédiatement  après la fermeture de la parenthese.

    Donc le problème reste entier l'application est refermée et le client semble toujours OnLine.

    D'avance merci

    P.S.


    ps



    • Modifié SEVRY1444 jeudi 9 octobre 2014 11:59
    jeudi 9 octobre 2014 11:57
  • Je pense que c'est un pb de design. C'est comme pour une appli Web (ce qu'est d'ailleurs une appli Silverlight), vous ne pouvez savoir exactement combien de personne sont sur votre site en même temps.

    Il faut mettre en place un système de timeout côté serveur genre :

    L'utilisateur fait une action quelconque dans l'appli, on enregistre côté serveur l'heure de cette dernière action. Et un utilisateur est considéré comme déconnecté si cette heure est antérieure à 20mn.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse SEVRY1444 jeudi 9 octobre 2014 13:01
    jeudi 9 octobre 2014 12:06
  • Merci de votre réponse,

    Je pense que c'est la solution vers laquelle je vais m'orientée: faire tourner un programme de mise à jour du flag OnLine sur le serveur.

    P.S.


    ps

    jeudi 9 octobre 2014 13:01