我在对话框程序的初始化时创建了一个线程A,线程A执行的是一个循环的后台写文件操作,我想在程序中没有用户消息输入和其他线程运行的时候就执行线程A,请问我该怎么写程序以确定在什么时间执行线程A操作?

解决方案 »

  1.   

    你要后台循环写文件,肯定是要用定时器咯?再另外设一个定时器B和一个bool类型的全局变量flag。在B的响应函数中判断,如果很久没有 WM_CHAR的话,就把flag值为false,说明这个时候没有用户输入。如果有输入,就将其值设为true。
    在执行线程A的定时器实现函数中对这个flag变量进行判断再执行线程A
      

  2.   

    判断IDLE状态,CYourApp::OnIdle()
    然后就启动线程A,开始执行...
      

  3.   

    同意楼上的
    也可以先创建线程,让它在那里等待可以断续工作的标志位,标志位在OnIdle里设置。
      

  4.   

    线程实现:
    void run(){while(flag){.....//你的后台写文件操作}}在OnIdle函数里面改变flag变量的值
      

  5.   

    在CWinApp::OnIdle里写,onidle空闲。
      

  6.   

    创建线程后,用SetThreadPriority将线程优先级设置为THREAD_PRIORITY_IDLE,或者适当提高一些。
      

  7.   


    顶!让系统来管理你的线程总会比自己好些!其实就算开个默认的优先及的线程也比用CWinApp::OnIdle 好,因为你既然用它了还用线程干嘛?
      

  8.   

    在窗口的Initial函数中启动线程就可以了
      

  9.   

    使用函数SetThreadPriority将线程的优先级设为THREAD_PRIORITY_IDLE。