wxWidgets程序增加CPU使用率
wxWidgets program increase CPU usage
我正在编写一个wxWidgets程序,它与使用空闲事件的wxWiki "Making a render loop"示例非常相似。我修改了显示面板,使其显示背景图像、闪烁文本和动画。
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);
}
我添加了Dispatch函数,因为没有它,内存和CPU使用将在程序启动后线性增加,但即使有Dispatch函数,CPU使用将在运行几个小时后逐渐攀升。只有当我单独显示背景时,CPU使用率才会稳定。
我在小狗linux上用wxWidgets 2.8.11做了测试,有人能给我建议吗?
对于这个程序,cpu使用率增加是完全正常的。查看"RequestMore"的文档。这基本上是循环idle函数,以便反复调用它。
解决方案:
使用wxTimer来闪烁文本,并删除空闲功能。
编辑:每日提示(:D):使用wxWidgets 2.9。
尝试替换
evt.RequestMore();
if( ! evt.MoreRequested() )
evt.RequestMore();
相关文章:
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 如何降低应用程序的 CPU 使用率?
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 一段时间后 CPU 使用率高
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- GetDC ReleaseDC 在特定上下文中的高 CPU 使用率
- 从 C++11 代码中获取系统内存和 CPU 使用率
- 在 Visual Studio 中记录 CPU 使用率
- C++如何允许等待而不会过多的 CPU 使用率
- Qtcreator 冻结,CPU 使用率为 100%
- 使用 fgets() c++ 读取大型 txt 文件时的 CPU 使用率为 99%
- OpenCL 的 CPU 使用率意外
- Loop Wregex始终返回false和高CPU使用率约50%
- 简单的C++SFML程序高CPU使用率
- 使用 PID 获取内存和 CPU 使用率
- 如何在TCP端口上实时传输数据期间减少CPU使用率
- WinAPI:在WM_PAINT省略 BeginPaint 和 EndPaint 会导致 100% 的 CPU 使用率
- 当CPU使用率高时,OpenCV会堆积内存吗
- 如何在运行SDL程序时降低CPU使用率