0/5 (9 avis)
Snippet vu 13 229 fois - Téléchargée 36 fois
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..."); } }
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...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.