我知道如何使用ManualResetEvent或同步原语(例如Monitor)来等待事件和/或锁,但是我想知道是否有一种方法可以实现以下内容:

ManualResetEvent resetEvent;

public string WaitForOneThousandMs()
{
    resetEvent.Wait(1000);

    if (WaitTime(resetEvent) <= 1000)
        return "Event occured within 1000ms.";
    else
        return "Event did not occur within 1000ms.";
}

1)等待1000毫秒,事件X发生

2)如果事件在1000ms内发生,请执行路径A

3)否则,执行路径B

这基本上是一个条件等待函数,其中条件是我们必须等待多长时间,如果可能的话,实现它的最佳方法是什么?

最佳答案

看来您正在追求:

return resetEvent.WaitOne(1000) ? "Event occurred within 1000ms"
                                : "Event did not occur within 1000ms";

WaitHandle.WaitOne 的文档中:



Monitor.Wait 以类似的方式返回bool

10-05 21:34