ManualEventReset - 等待两者中的任何一个

时间:2017-08-29 15:16:37

标签: c# manualresetevent

考虑一下我已经通过了两个ManualEventReset instances

public void MyApiCall(ManualResetEvent ev1, ManualResetEvent ev2)
{
   //my code
}

现在,我必须'WaitOne'任何一个(无论其中哪一个,我需要在其中一个提出信号时继续)。有可能不改变api?

其中一个解决方案是自旋锁:

while (!ev1.WaitOne(0) && !ev1.WaitOne(0)) 
{
   Thread.Sleep(500);
}

但我想知道是否有更好的解决方案。

1 个答案:

答案 0 :(得分:2)

您正在寻找WaitHandle.WaitAny

示例:

WaitHandle.WaitAny(new WaitHandle[] { ev1, ev2 });