Monitor.Enter
and Monitor.Exit
are designed to be called from the same thread. But, what if I need to release a lock in a different thread than acquired?
For example: there are shared resource and asynchronous operation that uses this resource. The operation begins with BeginOperation
and acquires the lock on the shared resource. There also the EndOperation
method that releases the lock. EndOperation
is typically called in another thread from a callback, thus I can't call Monitor.Exit
in the EndOperation
method. What is the best approach in this case? Will double-check locking with AutoResetEvent
instead of Monitor
be a good solution?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…