Я получаю исключение SynchronizationLockException внутри блокировки мьютекса при попытке вызвать Monitor.Wait (объект). Что я должен изменить?SynchronizationLockException с использованием мьютексов
static Mutex mutex;
static readonly object monitorKey;
condition = true;
mutex.WaitOne();
try
{
while (condition)
{
Monitor.Wait(monitorKey); // exception is thrown
}
isAnyoneWriting = true;
}
finally
{
mutex.ReleaseMutex();
}
Прошу прощения, я забыл присваивания, поскольку у меня есть они внутри конструктора. Вы случайно не знаете, почему мьютексы не работают как блокировка в этом случае? – PacoDePaco
Если вы назначили значение 'monitorKey' в своем конструкторе, это нормально. Что касается мьютекса, это не имеет ничего общего с проблемой или решением. Как я писал, * вы должны приобрести блокировку, прежде чем ждать на ней *. Это означает блокировку объекта, который вы планируете ждать. Именно так определяется API. – Amit
Большое спасибо, вы спасли меня от катастрофы;] – PacoDePaco