Монитор.Ввод
и Монитор.Exit
предназначены для вызова из того же потока. Но что, если мне нужно снять блокировку в потоке, отличном от полученного?
Например: есть общий ресурс и асинхронная операция, использующая этот ресурс. Операция начинается с BeginOperation
и получает блокировку общего ресурса. Также существует метод EndOperation
, который снимает блокировку. EndOperation
обычно вызывается в другом потоке из обратного вызова, поэтому я не могу вызвать Monitor.Exit
в методе EndOperation
. Каков наилучший подход в этом случае? Будет ли хорошим решением повторная проверка блокировки с помощью AutoResetEvent
вместо Monitor
?