| 在C++中,我们经常使用timer来定时地执行一些代码,在不需要的时候使用KillTimer()将其停止,在Symbian下我们也可以做同样的事,而使用的是CPeriodic.
首先我们在.h文件中声明一些我们要用的变量和函数
public: void DoSomething();
void Start(TTimeIntervalMicroSeconds32 aInterval); void Stop();
static TInt Tick(TAny* aThis);
private: CPeriodic* iTicker;
然后是.cpp中的实现
在ConstructL()中添加iTicker的初始化
iTimer = CTimeOutTimer::NewL( EPriorityHigh, *this ); CActiveScheduler::Add( this );
其余函数的实现
void CSocketsEngine::Stop() { if(iTicker) { iTicker->Cancel(); delete iTicker; iTicker = NULL; iTicker = CPeriodic::NewL(CActive::EPriorityIdle); } }
TInt CSocketsEngine::Tick(TAny* aThis) { static_cast<CSocketsEngine*>(aThis)->GetNetworkStrength(0); return 0; }
void CSocketsEngine::Start(TTimeIntervalMicroSeconds32 aInterval) { if(iTicker) { iTicker->Cancel(); delete iTicker; iTicker = NULL; iTicker = CPeriodic::NewL(CActive::EPriorityIdle); }
iTicker->Start(aInterval, aInterval, TCallBack(Tick, this)); }
void CSocketsEngine::DoSomething()
{
//做我们要做的事
} |