Monitor.Enter
并且Monitor.Exit
被设计为从同一个线程调用。但是,如果我需要在与获取的线程不同的线程中释放锁怎么办?
例如:有共享资源和使用该资源的异步操作。操作从共享资源开始BeginOperation
并获取锁。还有EndOperation
释放锁的方法。EndOperation
通常在回调的另一个线程中调用,因此我无法调用Monitor.Exit
该EndOperation
方法。在这种情况下,最好的方法是什么?仔细检查锁定AutoResetEvent
而不是Monitor
一个好的解决方案吗?