我要用一个按钮来触发一个文件的读出事件,但是文件的读出用的是死循环,我想还用这个按钮触发来跳出死循环,所以要用一个线程来调用死循环,但是线程是写在触发按钮的函数中,那我写的线程的回调函数能是触发这个按钮的函数嘛?如果不行,大家看看怎么解决那?

解决方案 »

  1.   

    可以:
    BOOL bCreateThread=FALSE;//是否创建了线程当然全局变量
    HANDLE m_hShutDown;//
    按钮中的函数
    if(bCreateThread)
    {
    SetEvent(m_hShutDown);//结束线程
    }
    else
    {
    m_hShutDown=CreateEvent(NULL,TRUE,FALSE,NULL);
    AfxBeginThread(.....);
    }//线程的回调函数
    for(;;)
    {
    //你要添加的读文件函数
    dwResult=::WaitForSingleObject(m_hShutDown,0);//不等待立即返回除非触发m_hShutDown事件
    if(dwResult==WAIT_OBJECT_0)
    {
    AfxEndThread(100);
    }
    }
      

  2.   

    OnXXXClick()
    {
    1.定义一个标志量(标志事件是在读,还是停止)
    2.当Flag == STOP  AfxBeginThread() 
    3.当Flag == READ  TerminateThread()
    }
      

  3.   

    CWinThread *m_FileRead;
    m_FileRead=AfxBeginThread(yourThread,yourParam);OnButton1Click()
    {
      m_FileRead->Resume();
    }
    OnButtonClick()
    {
     m_FileRead->Suspend();
    }