首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >wxWidgets程序增加CPU使用率

wxWidgets程序增加CPU使用率
EN

Stack Overflow用户
提问于 2011-12-05 01:59:22
回答 2查看 880关注 0票数 2

我正在编写一个wxWidgets程序,它非常类似于wxWiki使用空闲事件“制作一个呈现循环”的例子。我修改了显示面板以显示背景图像、闪烁的文本和动画。

代码语言:javascript
运行
复制
void MyApp::onIdle(wxIdleEvent& evt)
{
    if(render_loop_on)
    {
        drawPane->paintNow();

        while(Pending())
            Dispatch();
        evt.RequestMore();
    }
}

BasicDrawPane::BasicDrawPane(wxFrame* parent) :
wxPanel(parent)
{
    wxBitmap background;
    background.LoadFile("background.png", wxBITMAP_TYPE_PNG);
    m_pBackground = new wxStaticBitmap(this, -1, background);
    m_pBackground->Show();

    m_pText = new wxStaticText(this, -1, wxT("blinking"), wxPoint(400, 10));
    m_pText->Show();
    m_bShow = false;

    wxAnimation iconAni;
    iconAni.LoadFile("animation.gif");
    m_wxIconAnimationCtrl = new wxAnimationCtrl(this, -1, iconAni);
    m_wxIconAnimationCtrl->Play();
}

void BasicDrawPane::paintNow()
{
    m_bShow = !m_bShow;
    m_pText->Show(m_bShow);
}

我增加了调度功能,因为没有它,程序启动后内存和CPU使用量将线性增加,但即使有了调度功能,运行几个小时后,CPU使用率也会逐渐上升。只有当我单独显示背景时,CPU的使用才会稳定。

我用wxWidgets 2.8.11在小狗linux上做了测试,有人能给我建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-05 11:52:36

这是完全正常的,这个程序的cpu使用量增加。查看"RequestMore“的文档。这基本上是循环空闲函数,因此它被反复调用。

解决方案:

使用wxTimer闪烁文本并删除空闲函数。

编辑:

Tipp (:D):使用wxWidgets 2.9.x,它包含了很多错误和改进:)。

票数 3
EN

Stack Overflow用户

发布于 2011-12-05 14:03:27

试着替换

代码语言:javascript
运行
复制
evt.RequestMore();

使用

代码语言:javascript
运行
复制
if( ! evt.MoreRequested() )
   evt.RequestMore();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8380257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档