begin process at 2010 02 10 07:29:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > COMMENT NE LANCER QU'UNE INSTANCE DE MON PROGRAMME...

COMMENT NE LANCER QU'UNE INSTANCE DE MON PROGRAMME...


 Information sur la source

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.NET Source .NET ( DotNet ) Classé sous :instance, programme, mutex Niveau :Débutant Date de création :18/07/2003 Date de mise à jour :18/07/2003 15:04:28 Vu :8 451

Auteur : sergebre

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Vérifier qu'il n'y a pas déja une instance de mon programmme qui s'éxécute
et s'arrêter si c'est le cas.

utilisation de la classe "Mutex".

Source

  • using System.Threading;
  • .......
  • // code mis dans Main d'une application windows form
  • static void Main()
  • {
  • bool OK;
  • string moiID="UNE CHAINE QUELCONQUE ET UNIQUE";
  • Mutex moi=new Mutex(true,moiID,out OK);
  • if(OK)
  • {
  • Application.Run(new Form1());
  • moi.ReleaseMutex();
  • }
  • else
  • {
  • MessageBox.Show("Je tourne déja...");
  • }
  • }
using System.Threading;
.......

// code mis dans Main d'une application windows form

static void Main() 
{
     bool OK;
     string moiID="UNE CHAINE QUELCONQUE ET UNIQUE";
     Mutex moi=new Mutex(true,moiID,out OK);
     if(OK)
     {
          Application.Run(new Form1());
          moi.ReleaseMutex();
     }
     else 
     {
          MessageBox.Show("Je tourne déja...");
     }
}



 Sources du même auteur

Source avec Zip Source .NET (Dotnet) AUTRES MÉTHODES POUR FAIRE DES CAPTURES D'ÉCRAN
Source avec Zip Source .NET (Dotnet) FENÊTRE WINDOWS NON RECTANGULAIRE
Source avec Zip Source .NET (Dotnet) COLORMATRIX
Source .NET (Dotnet) DRAGDROP DE FICHIERS

 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) MECANISME DE SYNCHRONISATION DE THREAD - MONITOR, MUTEX, SEM... par jesusonline
Source avec Zip Source .NET (Dotnet) INSTANCE UNIQUE + COMMUNICATION DE MESSAGES (COMPATIBLE 32 E... par taupe4
Source avec Zip Source avec une capture Source .NET (Dotnet) APPLICATION NE POUVANT ÊTRE LANCÉ QU'UNE SEULE FOIS par LUDINSKI
Source avec Zip Source .NET (Dotnet) UNE SEULE INSTANCE DE L'APPLICATION par keikun59
Source .NET (Dotnet) LANCER UNE SEULE INSTANCE D'UN APPLICATION par kbumbazz

Commentaires et avis

Commentaire de gg00xiv le 02/12/2003 23:37:48

comment on le delete le mutex ?

Commentaire de sergebre le 03/12/2003 06:22:39

Si le Mutex n'esiste pas, il est créé par new Mutex et il est ensuite libéré par ReleaseMutex.

Si le mutex existe déjà, donc si une instance du programme tourne déjà, il ne peut être recréé, donc on n'a pas à le libéré car il sera libéré par ReleaseMutex de la 1er instance du programme.

Simple...

Commentaire de ludoelgringo le 13/12/2004 10:11:37

Joli, solution claire et efficace, bref tout ce qu'on aime!

Commentaire de Elektordi le 17/12/2004 20:13:05

Et si le programme plante ?

Commentaire de sergebre le 18/12/2004 12:22:20

tu utilises un gestionnaire d'erreur, le blabla habituel.
try-catch-finally par exemple, au niveau de la création du mutex et au niveau de Application.Run(....).

c'est pas les exemples qui manque sur le site...

Commentaire de Elektordi le 18/12/2004 16:07:31

Je voulait dire que ce n'était pas la meuilleure solution car vérifier si un process du même nom tourne déjà est bcps plus fiable !

Commentaire de ultima_93 le 05/09/2005 16:59:22

exactement, moi je passe par les process,c'est beaucoup plus simple
#region Main
[STAThread]
static void Main()
{
try
{
  Process proc = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName  (proc.ProcessName);
if (processes.Length != 1)
return;
Application.Run(new From1());
}
catch()
}
{}

Commentaire de Scaythe le 29/08/2006 16:37:54

Principe du process : mauvais.
Pourquoi ne pourrais-je pas avoir plusieurs appli (différentes) ayant le même nom de process ?

Voici une solution qui semble bien :
http://www.csharpfr.com/codes/SEULE-INSTANCE-APPLICATION_36791.aspx
Utilise le principe de la classe mutex ...

Commentaire de Polack77 le 18/12/2008 12:55:21

Tiens ????
8<-------- de Elektordi le 17/12/2004 20:13:05
Et si le programme plante ?
-------->8
8<-------- de sergebre le 18/12/2004 12:22:20
tu utilises un gestionnaire d'erreur, le blabla habituel.
try-catch-finally par exemple, au niveau de la création du mutex et au niveau de Application.Run(....).

c'est pas les exemples qui manque sur le site...
-------->8

Les mutex ne sont pas gérer par Windows directement ??? Si l'appli plante le mutex est détruit par Win donc pas besoin de gestion d'erreur (perso je n'est jamais utilisé la class mutex donc à testé mais les APIs ci dessous fonctionne sur ce principe ;) )

Déclaration pour VB6 :
Crée un Mutex
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByVal lpMutexAttributes As Long, ByVal bInitialOwner As Long, ByVal lpName As String) As Long

Ouvre un mutex si il existe (retourne 0 si il n'existe pas ;))
Private Declare Function OpenMutex Lib "kernel32" Alias "OpenMutexA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long

Voila bonne prog

:) amicalement :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lancer une nouvelle instance d'un programme [ par TheRealLink ] Bonjour,Voilà je cherche à savoir comment on peut lancer une deuxième instance de notre programme. Un peut comme sous Word lorsque on créer un nouveau Programmer un menustrip à partir des bouton sur mon programme (créé des raccourcis) [ par thedjflo ] Bonjour,J'ai créé un petit programme en mode graphique ou toutes les actions à effectuer sont accessibles en utilisant que le Click.J'ai créé un MenuS partage d'infos pour instance unique d'appli win [ par moretl ] Bonjour, Je développe une application winform qui ne doit être lancé qu'une seule fois sur un poste client. J'ai donc mis en place un système de récup Récupérer le [ ] args dans une autre classe de mon programme [ par Nixeus ] Bonjour à tous,J'ai développé un petit programme en C#,en ligne de commande . J'utilise pas mal d'arguments.Je souhaiterai, dans une de mes classe pou Aide sur un projet final Programme "Gestion de Cafe" [ par coolboy2008 ] Bonsoir a tous,pour un projet final je doit developper un programme en dotnet (C#) qui doit gerer un restaurant/cafe.je suis bloquer sur la partie la problème avec un fichier XML [ par suethi75 ] BonsoirJe développe un petite application en C# orienté Objet. Cependant, j'ai un soucis. private void button1_Click(object sender, EventArgs e)       probleme xml en C# [ par suethi75 ] bonjour, Je suis en train de comparer des données entre 3 fichier xml. Cependant il m'affiche en double parfois. Je ne vois pas le soucisVoici mon cod Traqueur mobine [ par elantri ] Bonjour tout le monde, j'ai un projet qui  consiste à développer 2 programmes en c#-un programme c# qui permettra de lire les données recues par un GP probleme syntaxe C# [ par suethi75 ] Bonjour, J'ai un soucis, je n'arrive pas à faire comparer deux objets, il ne rentre jamais dans la condition if.Voici mon algo:   private void btFormP try catch non traité [ par suethi75 ] Bonsoir, Je fais un try catch, je fais exprès en ne remplissant pas les champs de mon formulaire afin que le programme rentre dans le catch mais celui


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales