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!
}