Symbian 活动规划器 CActiveScheduler 的灵活应用
2010-03-26 21:23:00 来源:WEB开发网最后我们来写 doinstanceL函数
LOCAL_C void doInstanceL()
{
TimeCount* timeCount = TimeCount::NewLC();
// 每隔一秒钟打印一次
TimeCount->setDelayTime(1);
TimeCount->StartL();
CActiveScheduler::Start();
CleanupStack::PopAndDestroy(1);
}
创建好对象以后,加上CActiveScheduler::Start()程序就开始运行了,这句话告诉活动规划器该等待对象的状态的改变了,在这里就是 timeCount的iStatus的改变.等iStatus改变并调用了RunL以后,继续等待iStstus的改变,这样我们使用活动对象的计数器就能够通过消息驱动运行起来了.
这里的CActiveScheduler只管理了一个CActive 对象,就是timeCount,可以用类似的方法实现多个CActive,并且都加入 CActiveScheduler,CActiveScheduler将会等待所有加入它的CActive的状态的改变,其中有一个的状态改变就会去执行对应的活动对象的处理函数,当状态同时发生的时候,会通过对象的优先级来决定先调用谁的RunL函数.CActiveScheduler也是非抢占式的, 当一个RunL函数还没有执行完的时候,如果另一个CActive的状态改变,会等待RunL执行完以后再执行另一个CActive的处理函数.
用起来还算简单吧?.
本文来自 CSDN博客,转载请标明出处:http://blog.csdn.net/suyouxin/archive/2005/01/06 /242759.aspx
原文地址:http://blog.csdn.net/alex_hua/archive/2008/07/10/2633137.aspx
由于做工程的移植工作,需要移植代码到Symbian平台上,但之前代码的架构与Symbian平台看起来是有冲突,体现在之前代码中有一个独立线程用来做事件驱动、分发,然后在事件回调中完成自己的逻辑(包括异步请求),该线程是用
while(1)
{
getevent();
dispatchevent()
}
来实现。但在Symbian平台上,所有的异步方法的侦测是通过
更多精彩
赞助商链接