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

C# Discussion :

Instance unique d'une application


Sujet :

C#

  1. #1
    Membre éprouvé
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2005
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 365
    Points : 1 037
    Points
    1 037
    Par défaut Instance unique d'une application
    Bonjour

    Je recherche le moyen de rendre l'instance d'une app unique.

    L'utilisation de GetProcessByName ou bien du folder d'exécution de l'application n'est pas une solution fiable car il suffit de renommer ou de déplacer l'application pour que le système d'instance unique soit défaillant.


    Mon idée serait d'accoler une "clé" au premier démarrage de l'application et ainsi lorsqu'on relance l'application si cette clé est déjà présent, alors interdit le démarrage du programme.


    Mais voila, je ne vois pas très bien comment faire.

    Des idées ?


    Merci.

  2. #2
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Tu peux utiliser un Mutex pour cela

    Voir l'exemple en bas de la page: http://msdn.microsoft.com/en-us/library/bwe34f1k.aspx

  3. #3
    Membre éprouvé
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2005
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 365
    Points : 1 037
    Points
    1 037
    Par défaut
    Heu chui con, j'avais déjà mis le mutex et je sais pas pourquoi j'ai ajouté du code sur Process.GetProcessesByName :/

    Merci de ta réponse

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Je pense que cette source pourrait t'aider
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    L'utilisation de GetProcessByName ou bien du folder d'exécution de l'application n'est pas une solution fiable
    Source citée :
    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
    		// Teste si le processus n'est pas déjà lancé
    		private static bool CheckProcess()
    		{
    			Process pcur = Process.GetCurrentProcess();
    			Process[] ps = Process.GetProcesses();
    			foreach( Process p in ps )
    			{
    				if( pcur.Id != p.Id )
    				{
    					if(pcur.ProcessName == p.ProcessName )
    					{
    						return true;
    					}
    				}
    			}
    			return false;
    		}
    Je ne pense donc pas que cela convienne

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/06/2009, 23h55
  2. Instance unique d'une application portable
    Par shenron666 dans le forum C++
    Réponses: 13
    Dernier message: 21/12/2008, 11h20
  3. Lancement unique d'une application - numero de process
    Par lefabdepau dans le forum VB.NET
    Réponses: 3
    Dernier message: 20/02/2007, 12h17
  4. Lancer un et un seul thread unique dans une application web
    Par rach375 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 22/09/2006, 15h35
  5. [VB] Instance unique d'une application
    Par Mimoza dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/06/2006, 17h51

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