WEB开发网
开发学院手机开发Symbian 开发 Symbian 编程之活动对象正解 阅读

Symbian 编程之活动对象正解

 2010-03-18 20:58:00 来源:WEB开发网   
核心提示:User::WaitForRequest(status);CleanupStack::Pop(&timer);}LOCAL_C void MainL(){TInt n = 0;TBuf<10> str;_LIT(KNewLine, "");FOREVER{DoTestL();str.Nu

User::WaitForRequest(status);

CleanupStack::Pop(&timer);

}

LOCAL_C void MainL()

{

TInt n = 0;

TBuf<10> str;

_LIT(KNewLine, " ");

FOREVER

{

DoTestL();

str.Num(n);

n++;

console->Write(str);

console->Write(KNewLine);

}

}

三、使用User::WaitForRequest方法的问题

User::WaitForRequest有时候不会正常运行,如:CImageDecoder::Convert方法:

IMPORT_C virtual void Convert(TRequestStatus* aRequestStatus, CFbsBitmap& aDestination, CFbsBitmap& aDestinationMask, TInt aFrameNumber = 0);

最后一个参数必须为EOptionAlwaysThread,User::WaitForRequest才能正常执行,个人认为 CImageDecoder::Convert如果没有加EOptionAlwaysThread参数的时候是使用"长线任务"(将在下一节介绍)实现的。所以,CImageDecoder::Convert方法应该按照如下方法调用:

TRequestStatus status(KRequestPending);

CImageDecoder* decoder = CImageDecoder::FileNewL(iFs, aFileName, KMIMEType,, CImageDecoder::EOptionAlwaysThread);

decoder->Convert(&status, aBitmap);

User::WaitForRequest(status);

delete decoder;

decoder = NULL;

四、小结

本文介绍了在如果将异步函数同步使用。其实在Symbian的早期编程中还有一种异步函数的同步方法,那就是在异步函数调用后使用 CActiveScheduler::Start()方法嵌套活动调度器。但是这种方法已经被Symbian 7.0后的CActiveSchedulerWait替代,在此处就不再介绍。

上一页  4 5 6 7 8 9 

Tags:Symbian 编程 活动

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