我有2个项目。一种是由没有 MFC 风格的 C++ Builder 构建的。另一个是 VC++ MFC 11。
当我创建一个线程并创建一个循环时——假设这个循环向进度条位置添加一个——从 1 到 100 Sleep(10)
,当然它适用于 C++ Builder 和 C++ MFC。
现在,Sleep(10)
等待 10 毫秒。好的。但问题仅在于我有打开的媒体播放器、Winamp 或其他任何能产生“声音”的东西。如果我关闭所有媒体播放器、winamp 和其他声音程序,我的线程会慢于 10 毫秒。
它需要像50-100 ms / each
. 如果我打开任何音乐,它会按预期正常工作。
我不知道为什么会这样。我首先以为我在 MFC App 中犯了一个错误,但是为什么 C++ Builder 也变慢了?
是的,我确信这与声音有关,因为我什至重新格式化了我的窗口,禁用了所有内容。最后我发现了声音问题。
我的代码需要什么吗?
更新:
现在,我按照代码,发现我Sleep(1)
在这样的地方使用了等待 1 毫秒。原因是,我从左向右移动一个对象。如果我取消这个睡眠,那么移动就不会出现,因为它非常快。所以,我应该使用Sleep(1)
. 使用Sleep(1)
,如果音频打开,则它可以工作。如果音频关闭,则速度非常慢。
for (int i = 0; i <= 500; i++) {
theDialog->staticText->SetWindowsPosition(NULL, i, 20, 0, 0);
Sleep(1);
}
因此,非常感谢有关此的建议。我该怎么办?
我知道这是不正确的方法。我应该使用其他适当且有效的东西。但究竟是什么?哪个函数或类可以帮助我顺利地将静态文本从一个位置移动到另一个位置?
此外,更改线程优先级也无济于事。
更新 2:
更新 1 是另一个问题:)