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

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 - 2 déc. 2003 à 23:37
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 18 déc. 2008 à 12:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/11548-comment-ne-lancer-qu-une-instance-de-mon-programme

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
18 déc. 2008 à 12:55
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 :)
Utilisateur anonyme
29 août 2006 à 16:37
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 ...
ultima_93 Messages postés 46 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 26 juillet 2007
5 sept. 2005 à 16:59
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()
}
{}
cs_Elektordi Messages postés 186 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 janvier 2008
18 déc. 2004 à 16:07
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 !
sergebre Messages postés 10 Date d'inscription vendredi 20 juin 2003 Statut Membre Dernière intervention 26 décembre 2003
18 déc. 2004 à 12:22
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...
cs_Elektordi Messages postés 186 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 21 janvier 2008
17 déc. 2004 à 20:13
Et si le programme plante ?
ludoelgringo Messages postés 3 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 4 juillet 2005
13 déc. 2004 à 10:11
Joli, solution claire et efficace, bref tout ce qu'on aime!
sergebre Messages postés 10 Date d'inscription vendredi 20 juin 2003 Statut Membre Dernière intervention 26 décembre 2003
3 déc. 2003 à 06:22
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...
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
2 déc. 2003 à 23:37
comment on le delete le mutex ?
Rejoignez-nous