Symbian三種定時器的使用

來源:互聯網
上載者:User

Symbian可用定時器種類: CTimer,RTimer,CPeriodic,CHearBeat

1.CPeriodic用法:因其簡易性,最常被使用,需要實現回呼函數。

class CMyTimer : public CBase<br />{<br />public:<br /> CMyTimer();<br /> void StartTimer();<br /> void CancelTimer();<br /> static TInt Loop(TAny* aPtr);//回呼函數<br />private:<br /> CPeriodic* iTimer;<br />} </p><p>CMyTimer::CMyTimer()<br />{<br /> iTimer=CPeriodic::NewL(CActive::EPriorityStandard);<br /> StartTimer();<br />} </p><p>void CMyTimer::StartTimer()<br />{<br /> iTimer->Start(500000,500000,TCallBack(Loop,this));//請求只需發送一次<br />} </p><p>void CMyTimer::CancelTimer()<br />{<br /> iTimer->Cancel();<br />} </p><p>TInt CMyTimer::Loop(TAny* aPtr)<br />{<br /> //迴圈體,可以在此加入代碼<br />}<br />  

2.RTimer用法:需要配合CActive對象進行使用

class CMyTimer : public CActive<br />{<br />public:<br /> CMyTimer();<br />private:<br /> void RunL();<br /> void DoCancel();<br /> void StartTimer();<br />private:<br /> RTimer iTimer;<br />} </p><p>CMyTimer::CMyTimer()<br />:CActive(EPriorityStandard)<br />{<br /> iTimer.CreateLocal();<br /> CActiveScheduler::Add(this);<br /> StartTimer();<br />} </p><p>void CMyTimer::RunL()<br />{<br /> if(iStatus.Int()==KErrNone)//iStatus為CActive的成員變數,切勿自己定義<br /> {<br /> //迴圈體,可以在此加入代碼<br /> StartTimer();<br /> }<br />} </p><p>void CMyTimer::DoCancel()<br />{<br /> iTimer.Cancel();<br />} </p><p>void CMyTimer::StartTimer()<br />{<br /> if(IsActive())return;<br /> iTimer.After(iStatus,500000);<br /> SetActive();<br />}<br />

3.CTimer用法:CTimer需要被繼承使用,CTimer封裝了對RTimer的使用

class CMyTimer : public CTimer<br />{<br />public:<br /> static CMyTimer* NewLC();<br /> static CMyTimer* NewL();<br />private:<br /> CMyTimer():CTimer(EPriorityStandard){}<br /> void ConstructL();<br /> void RunL();<br />} </p><p>CMyTimer* CMyTimer::NewLC()<br />{<br /> CMyTimer* self=new(ELeave) CMyTimer();<br /> CleanupStack::PushL(self);<br /> self->ConstructL();<br /> return self;<br />} </p><p>CMyTimer* CMyTimer::NewL()<br />{<br /> CMyTImer* self=CMyTimer::NewLC();<br /> CleanupStack(self);<br /> return self;<br />} </p><p>void CMyTimer::ConstructL()<br />{<br /> CTimer::ConstructL();<br /> CActiveScheduler::Add(this);<br /> After(5000000);<br />} </p><p>void CMyTimer::RunL()<br />{<br /> //迴圈體,可以在此加入代碼<br /> After(5000000);<br />}<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.