WEB开发网
开发学院手机开发Symbian 开发 Symbian 活动规划器 CActiveScheduler 的灵活应用... 阅读

Symbian 活动规划器 CActiveScheduler 的灵活应用

 2010-03-26 21:23:00 来源:WEB开发网   
核心提示:CActiveScheduler.Start()完成,且该方法实际上就是一个死循环,Symbian 活动规划器 CActiveScheduler 的灵活应用(4),这样看起来,在同一个线程中,CActiveScheduler.Start()在线程的任何地方随时可以调用,且CActiveScheduler起来后,是不可能
CActiveScheduler.Start()完成,且该方法实际上就是一个死循环。这样看起来,在同一个线程中,是不可能有两个死循环存在的,这个移植是不能完成的,除非修改代码架构。

这个问题确实困扰了很久,呵呵,因为是一个人开发,确实没有人可以帮忙出点主义,脑子也死了,想不开了。现在终于有眉目了,基本可以解决该问题,途径就是理解活动对象和活动规划器的原理,灵活应用这对活宝!

之前一直想着,为了能侦测到异步请求是否完成,CActiveScheduler.Start()这个方法必须在线程的初始就调用,其实可以不这样,CActiveScheduler.Start()在线程的任何地方随时可以调用,且CActiveScheduler起来后,还是可以侦测到“很久”以前就完成的异步请求。例子如下:

/* ============================================================================

Name : NewClassTest.h Author : Alex Version : 1.0 Copyright : su-fun Description : CNewClassTest declaration ============================================================================ */

#ifndef NEWCLASSTEST_H

#define NEWCLASSTEST_H

#include

// For CActive, link against: euser.lib

#include

//For RTimer, link against: euser.lib

class CNewClassTest : public CActive

{

public:

// Cancel and destroy

~CNewClassTest();

// Two-phased constructor.

static CNewClassTest* NewL();

// Two-phased constructor.

static CNewClassTest* NewLC();

public:

// New functions

// Function for making the initial request

void StartL(TInt aState, TTimeIntervalMicroSeconds32 aDelay);

private:

// C++ constructor

CNewClassTest();

// Second-phase constructor

void ConstructL();

private:

// From CActive // Handle completion

void RunL();

// How to cancel me

void DoCancel();

// Override to handle leaves from RunL(). Default implementation causes

上一页  1 2 3 4 5 6  下一页

Tags:Symbian 活动 规划

编辑录入:coldstar [复制链接] [打 印]
赞助商链接