背景
我正在编写一个应用程序,它需要执行以下操作:
- 我调用
SomeBlockingMethod
方法。 - 该方法一直阻塞,直到我从另一个线程调用
SomeUnblockingMethod
方法。 - 当调用
SomeUnblockingMethod
方法时,SomeBlockingMethod
中的程序将继续执行。
请注意,我首先要做的事情是调用 SomeBlockingMethod
,然后稍后再调用 SomeUnblockingMethod
。我想使用 Monitor.Wait/Monitor.Pulse
机制来实现此目的。唯一的问题是,当调用 Monitor.Wait
时,除非涉及的 object
已被其他内容锁定(或者至少我不知道),否则无法初始阻塞...但是,我希望 阻塞 成为我要做的 第一件事情... 所以这就导致了我的问题...
问题
有没有办法实现 Monitor.Wait
并最初阻塞,直到调用 Monitor.Pulse
方法?
AutoResetEvent
仍然会阻塞调用线程,直到你发出信号。我建议可能有一些解决方案根本不需要它。 - Yuval Itzchakov