using System;
using System.Threading;
namespace UpToolLib
{
public static class MutexLock
private static Mutex _mutex;
private static bool _hasHandle;
public static void Lock()
_mutex = new Mutex(false,
"Global\\{c0c1e002-9e13-4e8f-a035-dbdc5128e00e}",
out bool _);
_hasHandle = false;
try
_hasHandle = _mutex.WaitOne(5000, false);
if (_hasHandle)
return;
throw new MutexLockLockedException();
}
catch (AbandonedMutexException)
#if DEBUG
System.Diagnostics.Debug.WriteLine("Mutex abandoned");
#endif
_hasHandle = true;
public static void Unlock()
_mutex.ReleaseMutex();
public class MutexLockLockedException : Exception