Как я могу избавиться от заброшенного мьютекса?

Резюме:

Есть ли способ очистить мьютекс, если процесс, который его создал, мертв и ушел?

Подробности:

Я использую мьютекс, чтобы убедиться, что запускается только один экземпляр моего приложения.

При тестировании нового кода (для автоматического обновления) я запустил Environment.Exit (0). Во время работы в режиме отладки мой мьютекс был очищен нормально.

Но когда я изменил сборку на «Release», мьютекс остается после вызова выхода и помечается как оставленный:

Я дважды проверил, чтобы убедиться, что еще не запущен процесс, к которому присоединен этот мьютекс.

Теперь каждый раз, когда я запускаю свое приложение, оно думает, что мьютекс все еще там и не будет запускать мое приложение. (Также происходит сбой, потому что он пытается отправить сообщение «запущенному» экземпляру приложения, чтобы показать себя.)

Я попытался освободить мьютекс следующим образом:

bool createdNew;
string applicationId = "18773:TestStudio";
var singleInstanceMutex = new Mutex(true, applicationId, out createdNew);

singleInstanceMutex.Close();  // Tried ReleaseMutex() too

но, конечно, это только получает и затем освобождает это.

Я знаю, что могу просто перезагрузиться, но я надеюсь на лучшее решение в случае, если это когда-нибудь произойдет в производстве.

Есть ли способ очистить мьютекс, если процесс, который его создал, мертв и ушел?

Ответы на вопрос(1)

Ваш ответ на вопрос