📄
字号:
我自己写了个控制台的程序 有个活动对象ActiveObjectClass,在控制台中主程序中我启动了活动对象,
描述如下:
ActiveObjectClass* obj= ActiveObjectClass::NewL();//已经把活动对象添加到规化器中
obj->StartL(10000);//启动活动对象
while(true)//因为我的活动对象会在控制台上会打印信息所以弄了个死循环
{
;
}
问题:我在Runl()中有输出信息的代码,运行时候为什么控制台上没有反应?(应该是没有执行)
本来我是准备悬分的,但是囊中实在太羞涩,不好意思....... 那位高手帮忙解释下,困惑中.....
你的StartL(10000)是怎么样implemented?
其实只要有做到 以下几点,那应该没有问题
1。 CActiveScheduler::Add(this)
2. 发出需求,比如: RFile::Read(TInt aPos,TDes8& aDes,TRequestStatus& aStatus);
3. SetActive()
还 有 什 么 问 题 么 ?
对你提出的条件我都满足了:
1. CActiveScheduler::Add(this) 在ActiveObjectClass* obj= ActiveObjectClass::NewL里面包含(有问题吗?)
2. 发出需求:
StartL()
{
Cancel(); // Cancel any request, just to be sure
iState = EUninitialized;
iTimer.After(iStatus, aDelay); // Set for later
SetActive(); // Tell scheduler a request is active
//User::WaitForRequest(iStatus);(这句话必须吗?)
}
3 .StartL()已经SetActive了
、、、、、、、、、、、、、、、、、、、、、、、、
CPrintInfor::CPrintInfor() :
CActive(EPriorityStandard)
{
}
CPrintInfor* CPrintInfor::NewLC()
{
CPrintInfor* self = new ( ELeave ) CPrintInfor();
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CPrintInfor* CPrintInfor::NewL()
{
CPrintInfor* self = CPrintInfor::NewLC();
CleanupStack::Pop(); // self;
return self;
}
void CPrintInfor::ConstructL()
{
User::LeaveIfError(iTimer.CreateLocal() ); // Initialize timer
iConsole = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,
KConsFullScreen));
iConsole->Write(_L("Console Created...!\n"));
CActiveScheduler::Add( this); // Add to scheduler
iConsole->Write(_L("Add to CActiveScheduler...!\n"));
}
void CPrintInfor::StartL(TTimeIntervalMicroSeconds32 aDelay)
{
Cancel(); // Cancel any request, just to be sure
iState = EUninitialized;
iTimer.After(iStatus, aDelay); // Set for later
SetActive(); // Tell scheduler a request is active
//User::WaitForRequest(iStatus);
}
void CPrintInfor::RunL()
{
if (iState == EUninitialized)
{
iState = EInitialized;
iConsole->Write(_L("EUninitialized...!\n"));
}
else
if (iState != EError)
{
iConsole->Write(_L("EError...!\n"));
}
SetActive(); // Tell scheduler a request is active
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -