流程是这样的: 
主线程 -> 创建1个线程"添加任务(调用dll中函数)"
主线程, DoModal创建1个对话框, 等待"添加任务完成", 同时显示"添加任务进度"问题是:
添加任务的线程一工作, 
主线程就停了, 变线性工作了!我尝试了一下
1. "添加任务的线程" 如果循环sleep, 两个线程就能正常切换
2. "添加任务的线程" 即使在循环中每次sleep(N秒), 也不会切换到主线程
求救 

解决方案 »

  1.   

    DoModal在你的模态对话框关闭前,是不会返回的,有两种方案:
    1、在对话框中启动定时器,在定时消息处理函数中获取进度
    2、使用非模态对话框,创建对话框后主线程在GetMessage、TranslateMessage、DispatchMessage我不知道你两个线程怎么同步的,如果这样还不行,就是你的同步有问题
      

  2.   

    DoModal是模态对话框,他可以截取所有启动它的线程的消息
    所以主线程就一直在等待DoModal的消息
    可以用浮动窗体实现
      

  3.   

    楼上各位, 应该不是模态对话框的问题。如果我把"添加任务线程" 的内容改成 while(1){sleep(10)};
    主线程的模态对话框 和 "添加任务线程" 是能互相切换, 同时工作的.但是
    如果我把"添加任务线程" 的内容改成 pTask->AddTask;
    就只运行 "添加任务线程", 不切换到主线程了.
      

  4.   

    你的子线程是死循环?那你有没有设置线程优先级,如果子线程优先级高,而你又是单核单线程CPU的话,那就只有子线程可以运行了。
      

  5.   

    “2、使用非模态对话框,创建对话框后主线程在GetMessage、TranslateMessage、DispatchMessage”
    用这个就可以了.