代码之家  ›  专栏  ›  技术社区  ›  MartyIX

如何检查WaitHandle是否已设置?

  •  33
  • MartyIX  · 技术社区  · 14 年前

    我有一个 WaitHandle

    注: 我可以添加一个bool变量,只要使用Set()方法,就将变量设置为true,但这种行为必须在WaitHandle中的某个地方构建。

    谢谢你的帮助!

    4 回复  |  直到 14 年前
        1
  •  59
  •   SwDevMan81    12 年前

    尝试 WaitHandle.WaitOne(0)

    如果毫秒刺激为零,则该方法不会阻塞。它测试等待句柄的状态并立即返回。

        2
  •  7
  •   Community CDub    4 年前
    const int DoNotWait = 0;
                              
    ManualResetEvent waitHandle = new ManualResetEvent(false);                   
    
    Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));
             
    waitHandle.Set(); 
    
    Console.WriteLine("Is set:{0}", waitHandle.WaitOne(DoNotWait));   
    

    输出:

    是set:False

    是set:True

        3
  •  2
  •   Jeff Yates    14 年前

    使用一个 Wait... WaitHandle 它需要一个超时值,例如 WaitOne

        4
  •  1
  •   Mike Dinescu    14 年前

    你可以用 WaitOne(int millisecondsTimeout, bool exitContext) 方法并为timespan传入0。它马上就回来。

    bool isSet = yourWaitHandle.WaitOne(0, true);