迷你timer

来源:互联网 发布:vba连接access数据库 编辑:程序博客网 时间:2024/06/11 23:41

用过timer的人都知道一般都需要继承一个类,加个回调,有的时候要用多个timer回调一个东西。总之用起来比较麻烦。

我简化了一下。希望对大家有用。

  1. /**
  2. * author :windcao windcao@people.com.cn
  3. * file: minitimer.h
  4. * desc: a mini and useful timer
  5. * copyright: windcao ,2004-08-02
  6. */
  7. #ifndef _WINDCAO_MINI_TIMER_
  8. #define _WINDCAO_MINI_TIMER_
  9. class MMiniTimerObserver
  10. {
  11. public:
  12.     virtual void OnTimeOut(TInt id)=0;
  13. };
  14. class CMiniTimer:public CTimer
  15. {
  16. public
  17.     CMiniTimer(TInt aPriority,MMiniTimerObserver& aObserver,TInt aId=0)
  18.         : CTimer(aPriority),iObserver(aObserver),iID(aId){  CActiveScheduler::Add(this);}
  19.     virtual ~CMiniTimer(){  Cancel();}
  20. private:
  21.     void RunL(){if(iStatus==KErrNone)iObserver.OnTimeOut(this->iID);}   
  22.     //don`t use this timer to at
  23.     void At(const TTime& aTime){}
  24.     MMiniTimerObserver & iObserver;
  25.     TInt iID;
  26. };
  27. #endif _WINDCAO_MINI_TIMER_

 

 

使用方法:

1添加头文件#include "minitimer.h“

2实现MMiniTimerObserver,如果有多个timer用一个observer,你需要定义多个id

3构造timer

  1. CMiniTimer iTimer1;
  2. CMiniTimer iTimer2;
  3. CMiniTimer iTimer3;
  4. iTimer1= CMiniTimer(CActive::EPrioprtyIdle,aObserver,EFirst);
  5. iTimer2= CMiniTimer(CActive::EPrioprtyIdle,aObserver,ESecond);
  6. iTimer3= CMiniTimer(CActive::EPrioprtyIdle,aObserver,EThrid);

4用CTimer::After启动定时器。注意不推荐用这个timer进行At操作。一般会有问题。

原创粉丝点击