Visual Studio 2010 C++ Sleep()

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); 

     } 
+0

一个问题:为什么你用C++编程 - cli当你编写c#时会更安全? –

+0

我只知道C++语法。 – imi007

Sleep()该呼叫被阻塞的主(UI)线程,这防止了消息泵从更新控制。

在这种情况下,看起来对Sleep的调用确实起到了阻止用户界面的作用 - 如果要防止再次按下按钮,更好的选择是禁用它,然后使用间隔500毫秒的定时器(System::Windows::Forms::Timer)重新启用该按钮。

通过使用一个计时器,您不会阻止UI线程,它允许您的控件保持活动状态,但您仍然阻止用户按下按钮。