【发布时间】:2016-08-07 11:49:45
【问题描述】:
背景
我正在尝试编写执行以下操作的应用程序:
- 我对@987654323@进行了方法调用。
- 此方法调用块,直到我从另一个线程调用
SomeUnblockingMethod。 - 当调用
SomeUnblockingMethod时,SomeBlockingMethod内部的例程将继续。
注意,我首先会拨打SomeBlockingMethod,然后我会拨打SomeUnblockingMethod。我正在考虑使用Monitor.Wait/Monitor.Pulse 机制来实现这一点。唯一的事情是,当有人调用Monitor.Wait 时,你不能一开始就阻止,除非所涉及的object 已经被其他东西锁定(或者至少我不知道)......但是,我想要 阻止 成为我做的第一件事...所以这引出了我的问题...
问题
有没有什么方法可以实现Monitor.Wait 以最初阻止直到调用Monitor.Pulse?
【问题讨论】:
-
@Sinatr 也许我很困惑输入...让我试一试。会尽快回复您。
-
您想使用Monitor.Wait()的重载,您可以在其中指定超时时间(例如Infinity)。
-
@Sinatr 是的,你是对的......因为我最初阻止了,这是个好主意。
-
A
AutoResetEvent仍然会阻塞调用线程,直到您发出信号。我建议可能存在根本不需要的解决方案。 -
好吧,难怪你不知道如何编写正确的代码。
标签: c# .net multithreading locking thread-synchronization