函数WaitForMultipleObjects可以同时监测多个同步对象,该函数的声明为:
DWORD WaitForMultipleObjects(DWORD nCount, CONST HANDLE *lpHandles, BOOL bWaitAll, DWORD dwMilliseconds );
参数nCount是句柄数组中句柄的数目。lpHandles代表一个句柄数组。bWaitAll说明了等待类型,如果为TRUE,那么函数在所有对象都有信号后才返回,如果为FALSE,则只要有一个对象变成有信号的,函数就返回。参数dwMilliseconds是以毫秒为单位的超时间隔,如果该参数为0,那么函数就测试同步对象的状态并立即返回,如果该参数为INFINITE,则超时间隔是无限的。问题:如果将dwMilliseconds设为INFINITE,怎样在没有监测到结果的情况下,中断WaitForMultipleObjects的监测?

解决方案 »

  1.   

    一般, 如果要中断的, 
    在加多个
    >>对象变成有信号
    来达到执行 WaitForMultipleObjects 到下一步,
    要不然, 可能就要强制终止对应的线程了
      

  2.   

    不要使用INFINITE了
    这样
    while (not WaitForMultipleObjects( ... ,1000) = MyOK)and ShouldBeContinue do ;
    可以变通的实现的
      

  3.   

    Wait := WaitForMultipleObjects(2, @Events, FALSE, INFINITE);
          if Wait <> WAIT_OBJECT_0+1 then     // not overlapped i/o event - error occurred,
            break;                            // or stop signaled加個 WAIT_OBJECT_0+1 就來判斷是不是要停止
      

  4.   

    http://expert.csdn.net/Expert/topic/2978/2978604.xml?temp=3.437442E-02同样的问题,一样的不懂... 请帮忙! thx