How to use CPeriodic for a steady stream of ticks

http://wiki.forum.nokia.com/index.php/How_to_use_CPeriodic_for_a_steady_stream_of_ticks

In the header file

// IMPLEMENTATION SPECIFIC CONSTANTS
const TInt KPeriodicTimerInterval5Sec(5000000);
 
class CMyClass : public CBase
{
 
// ...
 
private: // New functions
 
/**
* The call back function.
* /param aAny A pointer to this class.
*/

static TInt PeriodicTimerCallBack(TAny* aAny);
 
/**
* Notice that this is a sample fuction.
*
*/

void SomeFunction();
 
private: // Member data
 
/**
* The periodic timer.
* Owned by CMyClass
*/

CPeriodic* iPeriodicTimer;
};

 

In the cpp file

// ----------------------------------------------------------------------------
// CMyClass::~CMyClass()
// Destructor.
// ----------------------------------------------------------------------------
//
CMyClass::~CMyClass()
{
// ...
 
if(iPeriodicTimer)
{
// Calling Cancel without checking if the timer is active is safe
iPeriodicTimer->Cancel();
}
delete iPeriodicTimer;
 
// ...
}
 
// ----------------------------------------------------------------------------
// CMyClass::ConstructL()
// Perform second phase construction of this object.
// ----------------------------------------------------------------------------
//
void CMyClass::ConstructL()
{
// ...
 
// Initialize the periodic timer.
iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle);
// Start the periodic timer, when ever the time elapsed
// the PeriodicTimerCallBack() will get called.
// Notice: The timer will periodically hit the PeriodicTimerCallBack
// until you cancel the timer by calling iPeriodicTimer->Cancel().
iPeriodicTimer->Start(
KPeriodicTimerInterval5Sec, KPeriodicTimerInterval5Sec,
TCallBack(PeriodicTimerCallBack, this));
 
// ...
}
 
// ----------------------------------------------------------------------------
// CMyClass::PeriodicTimerCallBack(TAny* aAny)
// The call back function.
// ----------------------------------------------------------------------------
//
TInt CMyClass::PeriodicTimerCallBack(TAny* aAny)
{
CMyClass* self = static_cast<CMyClass*>( aAny );
 
// TODO: The below call is a sample function,
// you may change it to your requirement.
self->SomeFunction();
 
// Cancel the timer when the callback should not be called again.
// Call: self->iPeriodicTimer->Cancel();
 
return KErrNone; // Return value ignored by CPeriodic
}
 
// ----------------------------------------------------------------------------
// CMyClass::SomeFunction(TAny* aAny)
// Notice that this is a sample fuction.
// ----------------------------------------------------------------------------
//
void CMyClass::SomeFunction()
{
// TODO: Your code!
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值