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

ManualEventReset - wait for any of both

考虑我已经过了两个ManualEventReset instances

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

现在,我必须为两者中的任何一个“WaitOne”(无论其中一个,我需要在其中一个发出信号后立即继续)。不改也可以 api?

解决方案之一是自旋锁:

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

但是不知道有没有更好的解决办法

您正在寻找 WaitHandle.WaitAny.

示例:

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