3

ManualResetEvent または同期プリミティブ (モニターなど) を使用してイベントやロックを待機する方法は知っていますが、次のようなものを実装する方法があるかどうか疑問に思っています。

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) イベント X が発生するまで 1000ms 待ちます

2) 1000ms以内にイベントが発生した場合、パスAを実行

3) それ以外の場合は、パス B を実行します。

これは基本的に条件付きの待機関数であり、条件は待機時間です。可能であれば、それを実装する最良の方法は何でしょうか?

4

1 に答える 1

5

あなたが求めているようです:

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

のドキュメントからWaitHandle.WaitOne

現在のインスタンスがシグナルを受信した場合は
trueを返します。それ以外の場合はfalse

Monitor.Waitbool同様の方法で a を返します。

于 2012-08-02T18:26:51.247 に答える