imi*_*007 2 c++ sleep visual-studio-2010 winforms
我喜欢在Windows窗体项目中使用Sleep()函数,但Sleep()先于其他任何东西执行.我读到我应该使用fflush()进行刷新,但我不知道要刷新什么.有人能帮我吗?
代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
this->label1->Visible= false;
this->button1->Visible= false;
r = (float)rand()/(float)RAND_MAX;
r = r*100000;
i = r;
r = r - i;
String^ strR = "" + r;
this->label2->Text = strR;
if(r >= 0.5)
{
this->pictureBox1->Visible= true;
this->pictureBox1->BackColor = System::Drawing::Color::Blue;
}
else
{
this->pictureBox1->Visible= true;
this->pictureBox1->BackColor = System::Drawing::Color::Red;
}
Sleep(500);
}
Run Code Online (Sandbox Code Playgroud)
调用Sleep()阻止了您的主(UI)线程,这阻止了消息泵更新您的控件.
在这种情况下,Sleep除了阻止你的UI之外,它似乎没有真正起作用的目的 - 如果你想阻止再次按下按钮,更好的选择是禁用它,然后使用计时器(System::Windows::Forms::Timer)以500 ms的间隔重新启用按钮.
通过使用计时器,您不会阻止UI线程,这允许您的控件保持活动状态,但仍然阻止用户按下按钮.