Polack77
Messages postés1098Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention22 octobre 20191 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
ultima_93
Messages postés46Date d'inscriptionmercredi 19 mai 2004StatutMembreDernière intervention26 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és186Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention21 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és10Date d'inscriptionvendredi 20 juin 2003StatutMembreDernière intervention26 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és186Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention21 janvier 2008 17 déc. 2004 à 20:13
Et si le programme plante ?
ludoelgringo
Messages postés3Date d'inscriptionvendredi 21 février 2003StatutMembreDerniè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és10Date d'inscriptionvendredi 20 juin 2003StatutMembreDernière intervention26 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és656Date d'inscriptionmercredi 22 août 2001StatutMembreDernière intervention11 mars 200513 2 déc. 2003 à 23:37
18 déc. 2008 à 12:55
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 :)
29 août 2006 à 16:37
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 ...
5 sept. 2005 à 16:59
#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()
}
{}
18 déc. 2004 à 16:07
18 déc. 2004 à 12:22
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...
17 déc. 2004 à 20:13
13 déc. 2004 à 10:11
3 déc. 2003 à 06:22
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...
2 déc. 2003 à 23:37