Я работаю над старой кодовой базой, в которой в нескольких местах содержится следующий код:
Mutex mutex = new Mutex(false, "<some mutex name>");
mutex.WaitOne();
try {
// do something
} finally {
mutex.ReleaseMutex();
}
Эти мьютексы используются для внутрипроцессной синхронизации, поэтому я переписал их, используя вместо этого блокировки и проблемы вроде бы исчезли.
Мне известно, что код не самый лучший (по сравнению с Каков хороший пример использования Global Mutex в C #? ), но это не объясняетмне почему mutex.ReleaseMutex () иногда выдает "Mutex не принадлежит".
Итак, я спрашиваю, чего не хватает (или не так) в приведенном выше коде, который создает исключение?