WaitHandle[] handles = new WaitHandle[1];
handles[0] = m_ShutDownEvent;
int iRtn = WaitHandle.WaitAny(handles, 10000, false);//10秒等待问题1:是否自动将m_ShutDownEvent设置为终止.如果有其他等待m_ShutDownEvent,是否reset一下    就可以?
问题2:等待到事件,返回值?
问题3:超时等待,返回值是多少?
问题4:第三个参数的作用.

解决方案 »

  1.   

    3.如果某个线程调用了等待句柄的一个等待方法,但等待句柄为另一个线程所有,那么调用线程将等待一段时间(如果指定了超时值),或无限期地等下去(如果未指定超时值),直到另一个线程释放等待句柄为止。如果指定了超时值,而等待句柄在超时时间未到之前被释放,则该调用返回 True。否则,等待调用将返回 False,调用线程继续运行。
      

  2.   

    2等待句柄是将一个线程的状态通知给另一个线程的对象。线程可以使用等待句柄来通知其他线程它们需要独占访问某个资源。其他线程则必须等到等待句柄空闲时才能使用该资源。等待句柄有两个状态:signaled 和 nonsignaled。不属于任何线程的等待句柄处于 signaled 状态。属于某个线程的等待句柄处于 nonsignaled 状态。
    返回值
    满足等待的对象的数组索引;如果没有任何对象满足等待,并且等效于 timeout 的时间间隔已过,则为 WaitTimeout。
      

  3.   

    handles[0] = m_ShutDownEvent??
    什么意思?
    m_ShutDownEvent是什么?