IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[WPF] Instance unique


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [WPF] Instance unique
    Bonjour à tous,

    J'ai un petit soucis concernant mon application.
    Je souhaiterais ne pouvoir lancer qu'une seule instance de mon application, les instances suivantes n'enverrais que des paramètres à la première.

    J'avais donc fais de code après des recherches sur le net :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public partial class App : Application
        {
            private SingleInstanceApp AppMutex = new SingleInstanceApp("{DesktopMutex}");
            private ParametersServer Server = null;
     
            protected override void OnStartup(StartupEventArgs e)
            {
                String[] Args = e.Args;
                if (AppMutex.IsRunning())
                {
                    if (Args.Length > 0)
                    {
                        try
                        {
                            ParametersClient Channel = new ParametersClient();
                            Channel.Connect();
                            Channel.Send(Args.ToList());
                            Channel.Disconnect();
                        }
                        catch (Exception E)
                        {
                            MessageBox.Show(E.Message);
                        }
                    }
                    this.Shutdown();
                }
                else
                {
                    if (Args.Length > 0)
                    {
                        ParametersDispatcher Dis = new ParametersDispatcher(Args.ToList());
                        Dis.Dispatch();
                        Dis = null;
                    }
                    this.Server = new ParametersServer();
                    this.Server.Connect();
                }
            }
            protected override void OnExit(ExitEventArgs e)
            {
                if (this.Server != null)
                {
                    this.Server.Disconnect();
                    this.Server = null;
                }
                if (this.AppMutex != null)
                    this.AppMutex.Dispose();
            }
        }
    Le passage des paramètres fonctionnent mais l'application plante (pour les instances suivantes) sur le this.Shutdown(), en debuguant, j'ai eu l'impression qu'il instanciait quand même la fenêtre principale.

    Merci d'avance
    Cordialement,
    NeoKript

  2. #2
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Hello,

    Je pense que tu as bien détecté le problème... il faut quitter l'application avant qu'elle ne soit lancée (avant le OnStartup).

    Rapidement, il faut que tu redéfinisse ta propre classe App et que dedans tu lances ou non l'application réelle.

    Ce post de blog explique tout de façon très claire: http://blogs.microsoft.co.il/blogs/a...plication.aspx

    Bon courage,

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par jmix90 Voir le message
    Hello,

    Je pense que tu as bien détecté le problème... il faut quitter l'application avant qu'elle ne soit lancée (avant le OnStartup).

    Rapidement, il faut que tu redéfinisse ta propre classe App et que dedans tu lances ou non l'application réelle.

    Ce post de blog explique tout de façon très claire: http://blogs.microsoft.co.il/blogs/a...plication.aspx

    Bon courage,
    Je n'avais pas trouvé cette méthode lors de mes précédentes recherches.

    Ça fonctionne à merveille.

    Merci encore pour ton aide.

  4. #4
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    No pb, content d'avoir pu t'aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/06/2006, 15h11
  2. [VB] Instance unique d'une application
    Par Mimoza dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/06/2006, 17h51
  3. [C#][VS2003] Instance unique
    Par shinkyo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/05/2006, 00h42
  4. [MFC] instance unique de dialogue non modale
    Par venomelektro dans le forum MFC
    Réponses: 5
    Dernier message: 02/02/2005, 12h41
  5. [VB6] [DLL] DLL à instance unique
    Par HPJ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 19/09/2003, 08h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo