活动对象调度器-活动对象

    技术2026-01-12  5

     非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()函数.

     

     

     

    最新回复(0)