在Button单击事件中,写如下代码:hThread = CreateThread(NULL, 0, VSFiles, &m_stVSFile, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);这样,程序执行时,界面会有1分钟的无响应。而把WaitForSingleObject(hThread, INFINITE),放在VSFiles函数[自定义thread function]时,界面可以响应,但处理结果又有意外错误。
我也想在thread function中等待线程结束,应该不太对。请问,如何解决这样的问题呢(后台线程执行时,如何解决界面无响应的问题)?谢谢!

解决方案 »

  1.   

    你的Button单击事件要等hThread线程退出了,才能执行完
      

  2.   

    先让Button单击事件返回,等线程结束时可以通过自定义消息PostMessage通知界面线程
      

  3.   

    WaitForSingleObject(hThread, INFINITE);   不要使用这个,不要再button的代码里等待。建议可以在线程里发个消息给主窗口,或者搞个回调函数,让工作线程自己通知主线程。
      

  4.   

    WaitForSingleObject(hThread, INFINITE);
    这样等待就会阻塞界面线程,应该在创建线程后立即返回,继续消息循环,如果要得到线程的结果,可以用线程向窗口来发送消息,如果在线程处理期间不想让用户进行某些操作,可以Disable相关控件。