我正在尝试模拟窗口中小部件的“实时”移动,因此使用了flush方法,并且基本上在此期间,循环Fl Window将冻结在循环中的任意点,但并非每次运行代码,更像是3次。窗口将显示“无响应”错误,然后在循环完成后恢复。
如代码中所示,我尝试使用锁定功能,认为这是试图干扰的主要模块,但未产生任何结果
Fl::lock();
while (instructions.size() > 0) {
instructions[0]->do_it();
this->redraw();
Sleep(plotSpeed);
Fl::flush();
instructions.erase(instructions.begin());
}
Fl::awake();
Fl::unlock();
答案 0 :(得分:0)
我对此也有疑问,大多数情况下OSX和Linux上的行为是不同的。 但有一个建议:在Sleep调用之后,还添加一个Fl :: check()调用,该调用应处理所有未决的内部消息。或者尝试Fl :: wait()。