从CWinThread继承的线程类在Debug模式下SetTimer(NULL,0,5000,NULL)可以正常使用,可以正常触发线程中的OnTimer函数,可是在Release下执行完OnTimer后就会出现非法操作(Win98)或异常退出(Win2000Server),不知道如何解决!按说线程中无窗口就不能使用SetTimer,可是debug下为何就可以呢?难道是debug的Lib和release的根本不同?希望高手解答!!!分数不够可以再加!

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/934/934170.xml?temp=.2519342
      

  2.   

    并非没有窗口就不能SetTimer,假如你继承的线程名字为CMyThread:
    BOOL CMyThread::InitInstance()
    {
    m_nTimer=SetTimer(NULL,1,5000,NULL); //安装计时器
    return TRUE;
    }
    //重载Run
    int CMyThread::Run() 
    {
    MSG msg;
    while(::GetMessage(&msg,NULL,0,0))
    {
    switch(msg.message)
    {
         case WM_TIMER:
                             你的处理代码
                           break;
                       }
              }
    if(m_nTimer)
    KillTimer(NULL,m_nTimer);
    return CWinThread::Run();
    }你试试,我这样用的没有出问题。
      

  3.   

    Bind(天高云淡) 的方法在release下还是有问题!
    ciml(镜子) 的方法测试通过,谢谢!
      

  4.   

    Bind(天高云淡) 的方法在release下还是有问题!
    ciml(镜子) 的方法测试通过,谢谢!
      

  5.   

    livelivelive(神仙般的生活) 不可能吧?我在DEBUG和RELEASE下都用过的,没有一点问题啊,你描述一下问题的状态。