在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)->DoSomething();
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()
{
//做我们要做的事
}