第一种方法是利用交互式线程,而不要用工作线程。
或者响应可继承函数OnIdle();

解决方案 »

  1.   

    别用WaitForMultipleObjects,否则等的时候主线程也不会相应,
    最好在线程结束时发个消息给主线程,使之启动一个新线程
      

  2.   

    既然IO不能避免而且会耗费大量的CPU时间片,那么只能更新硬件了.
    还快速的IO设备或快速CPU.:)
      

  3.   

    请检查一下,当你的N个Thread正在进行I/O操作时,你的主程是否被挂起了(你用了WaitFor......,你的主线程就被挂起了),如果我没理解错,你在一个循环里反复调用WaitFor......,这样你的主线程不断被挂起,菜单响应自然很慢。
    建议你先用主线程创建一个子线程A,由A完成你所说的检查、创建(I/O子线程)等工作,而让你的主线程正常响应消息,这样应该是有效的。
    祝好运!
      

  4.   

    在线程结束时,给主线程窗体发消息PostMessage,在主窗体中测出线程结束消息时,
    作相应的处理
      

  5.   

    你是怎么检测200ms的,如果用WaitForMultipleObjects带参数200ms那么其不会占用CPU时间的。
    你如果在线程内不停地查询,那当然会占用大量的CPU时间!这时可在循环检测中加入一些Sleep语句。
    不要不停地创建线程,在同一线程内循环检查,如果等到事件,就发送消息或把信息放在数据队列中,主线程定时检测。
      

  6.   

    当一个 Thread做完的时候,就让某个进度条StepIt()
    这里我用的是向主MainFrame发消息的方法
    当Thread个数比较少的时候是正常的,一多就响应很慢了
    怎么解决?
    (我认为可能是消息队列中的消息太多,系统来不及处理菜单响应)
      

  7.   

    你用的是PostMessage()还是SendMessage(),用SendMessage()应该不会有这个问题吧。