我的程序执行到一个地方,会启动一个回调函数去下载文件,然后后面的代码是想要回调函数下载完文件后再继续执行。
因为这个时候必须要等一个下载完成的消息发出才能继续,这个时候怎么办?是不是什么waitforsingleObject等函数可以解决。我对这个还不熟悉,希望各位能贴点代码出来。谢谢谢谢。

解决方案 »

  1.   

    一种办法就是你定义一个全局变量,比如:bool Waiting = true;
    这是等待:
    for(;Waiting;);
    收到消息这样写:Waiting = false;
      

  2.   

    可以用event啊。然后在用waitforsingleObject,可以实现的。
      

  3.   

    用WaitForSingleObject( HANDLE hEvent )HANDLE hEvent = CreateEvent (...);//具体参数见MSDNWaitForSingleObject( hEvent );然后当另外一个线程调用
    SetEvent( hEvent )的时候,上面的Wait将会返回
      

  4.   

    可以在死循环里调用Sleep,我试过只要休眠1毫秒,CPU占用率马上狂降,没有问题的哦。
      

  5.   

    我正是这样用的;
    //先create
    hdlEVENT = CreateEvent(NULL, FALSE, FALSE, NULL);//启动回调函数
    //启动后的一句
    WaitForSingleObject(hdlEVENT, 10000);//在回调函数内部,当处理结束时
    SetEvent(hdlEVENT);但是结果好像就是SetEvent(hdlEVENT);
    有没有一个样,就是说它总是等10s才结束,不会在SetEvent(hdlEVENT);
    时候结束。
      

  6.   

    死循环里调用Sleep???
    我这样做好像是整个程序sleep了。就是while(bEnd){sleep(1000);}
    这样导致回调函数都没有可能让bEnd=true;