【问题标题】:Visual Studio 2010 c++ Sleep()Visual Studio 2010 c++ 睡眠()
【发布时间】:2012-12-17 05:41:45
【问题描述】:

我喜欢在 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);

         }

【问题讨论】:

  • 一个问题:为什么你用 c++-cli 编程,而写 c# 会更安全?
  • 我只知道c++语法。

标签: c++ winforms visual-studio-2010 sleep


【解决方案1】:

Sleep() 的调用阻塞了您的主 (UI) 线程,这会阻止消息泵更新您的控件。

在这种情况下,对Sleep 的调用似乎并没有真正的目的,除了阻止你的用户界面 - 如果你想阻止按钮再次被按下,更好的选择是禁用它,然后使用间隔为 500 毫秒的计时器 (System::Windows::Forms::Timer) 重新启用按钮。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2023-04-05
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多