1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| static Mutex mutex;
static private string ChannelName
{
get { return "MonSuperMutexUnique" + Process.GetCurrentProcess().SessionId.ToString(); }
}
static public void Run()
{
bool createNew = false;
try
{
mutex = Mutex.OpenExisting(ChannelName);
}
catch (WaitHandleCannotBeOpenedException)
{
mutex = new Mutex(true, ChannelName, out createNew);
}
if (createNew)
{
mutex.ReleaseMutex();
Application.Run();
}
else
{
try
{
// On attend la libération du mutex
mutex.WaitOne();
CreateClient();
}
catch (Exception) { }
finally
{
mutex.ReleaseMutex();
}
}
} |
Partager