非GUI程序 ,
需要在入口函数中(如GLDEF_C TInt E32Main())自己创建一个活动对象调度器:
// create an active scheduler to use CActiveScheduler* scheduler = new(ELeave) CActiveScheduler(); CleanupStack::PushL(scheduler); CActiveScheduler::Install(scheduler);
然后在要使用活动对象调度器的类(该类继承CActive)中, 像平常一样使用活动对象调度器。
注意:
活动对象调度器可以用来实现等待功能,即先调用一个异步函数后,然后调用CActiveScheduler::Start(); 然后在异步函数的回调函数中调用CActiveScheduler::Stop();
如SDK Help中描述:
Start() returns only when a corresponding Stop() or Halt() is issued.
Although this can be used to start a nested wait loop, this API is deprecated for that specific functionality, and a CActiveSchedulerWait object should be used instead.
在GUI 程序中,
不需要自己创建活动对象调度器,仅仅需要一个类继承CActive, 然后通过CActiveScheduler::Add(this)把自己添加进活动对象调度器, 在该类的Start(或类似Start功能)函数中, 调用异步函数之后,再调用SetActive();
然后异步操作完成后,就会自动调用该类的RnuL()函数.
