Visual Studio 2010 C++ Sleep()
问题描述:
我喜欢在Windows Forms项目中使用Sleep()函数,但Sleep()在其他任何操作之前执行。我读过我应该使用fflush()刷新,但我不知道要刷新什么。有人能帮我吗?Visual Studio 2010 C++ Sleep()
的代码:
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);
}
答
到Sleep()
该呼叫被阻塞的主(UI)线程,这防止了消息泵从更新控制。
在这种情况下,看起来对Sleep
的调用确实起到了阻止用户界面的作用 - 如果要防止再次按下按钮,更好的选择是禁用它,然后使用间隔500毫秒的定时器(System::Windows::Forms::Timer
)重新启用该按钮。
通过使用一个计时器,您不会阻止UI线程,它允许您的控件保持活动状态,但您仍然阻止用户按下按钮。
一个问题:为什么你用C++编程 - cli当你编写c#时会更安全? –
我只知道C++语法。 – imi007