本帖最后由 arpnet99 于 2010-07-22 09:00:48 编辑

解决方案 »

  1.   

    我觉得能用线程的话,尽量用线程去实现,毕竟你说的定时器(SetTimer),它是利用CPU中断来实现的,频繁的中断容易挂起程序或者其他影响,这样很不河蟹...再者,线程也可以实现“定时器”同样的效果呀?举例:#define TIMER_SLEEP     10000DWORD WINAPI TimerThread(LPARAM pamaram)
    {
        UINT oldTickCount, newTickCount;
        oldTickCount = GetTickCount();
        while(TRUE)
        {
            while(TRUE)
            {
                newTickCount = GetTickCount();
                if(newTickCount - oldTickCount >= TIMER_SLEEP)
                {
                    oldTickCount = newTickCount;
                    break;
                }
                else
                    SwitchToThread();
            }
            // Call you function
        }
        return 0;
    }
      

  2.   

    SetTimer是通过消息处理来实现定时的,要是主线程中某个处理过程太耗时,会导致处理WM_TIMER延后,
    但是用线程来处理就不会有这样的情况,所以相对来说线程更通用些吧。个人理解。
      

  3.   

    原来做一个字幕滚动的效果,发现用定时器比用线程效果好,平滑不容易卡,这个也是看具体情况吧。线程脱离了主线程,像一些COM的使用、创建对话框什么的都稍微复杂些,定时器毕竟有个消息队列维护着,感觉上要安全些。
      

  4.   

    要想尽可能提供cpu的使用率那就多线程。如果不痛不痒那就timer,容易维护。