10 public Mutex(
bool initiallyOwned,
string? name, out
bool createdNew)
15 public Mutex(
bool initiallyOwned,
string? name)
20 public Mutex(
bool initiallyOwned)
32 base.SafeWaitHandle =
handle;
52 private void CreateMutexCore(
bool initiallyOwned,
string name, out
bool createdNew)
54 uint flags = (initiallyOwned ? 1u : 0u);
60 if (lastPInvokeError == 6)
66 createdNew = lastPInvokeError != 183;
67 base.SafeWaitHandle = safeWaitHandle;
85 if (2 == lastPInvokeError || 123 == lastPInvokeError)
89 if (3 == lastPInvokeError)
93 if (6 == lastPInvokeError)
99 result =
new Mutex(safeWaitHandle);
static bool ReleaseMutex(SafeWaitHandle handle)
static SafeWaitHandle CreateMutexEx(IntPtr lpMutexAttributes, string name, uint flags, uint desiredAccess)
static SafeWaitHandle OpenMutex(uint desiredAccess, bool inheritHandle, string name)
static Exception GetExceptionForWin32Error(int errorCode, string path="")
static int GetLastPInvokeError()
void SetHandleAsInvalid()
static string Arg_SynchronizationLockException
static string Format(string resourceFormat, object p1)
static string Threading_WaitHandleCannotBeOpenedException_InvalidHandle
static string Argument_EmptyName
static string IO_PathNotFound_Path
static OpenExistingResult OpenExistingWorker(string name, out Mutex result)
Mutex(bool initiallyOwned, string? name)
Mutex(SafeWaitHandle handle)
Mutex(bool initiallyOwned, string? name, out bool createdNew)
Mutex(bool initiallyOwned)
void CreateMutexCore(bool initiallyOwned, string name, out bool createdNew)
static Mutex OpenExisting(string name)
static bool TryOpenExisting(string name, [NotNullWhen(true)] out Mutex? result)
static readonly IntPtr Zero