Я нашел следующий код в SO:
Код: Выделить всё
using var mutex = MutexAcl.Create(true, mutexId, out bool mutexCreated, securitySettings);
var hasHandle = false;
try
{
try
{
hasHandle = mutex.WaitOne(1000, false);
if (hasHandle == false)
LogError("Timeout waiting for exclusive access.");
}
catch (AbandonedMutexException)
{
hasHandle = true;
}
// do work
}
finally
{
if (hasHandle)
mutex.ReleaseMutex();
}
Зачем ждать мьютекс, если можно использовать переменную mutexCreated?
Если я правильно понимаю, mutexCreated имеет значение true, если глобальный мьютекс не существует, он был создан с помощью этого вызова метода и принадлежит потоку, и если он имеет значение false значит он уже существовал и текущий поток им не владеет, поэтому можно с уверенностью предположить, что другой экземпляр уже запущен.
Я что-то упустил? Почему нам нужно ждать мьютекса, для которого у нас уже есть вызов Create?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ting-on-it
Мобильная версия