如何暂停一个程序几毫秒?

时间:2010-03-17 16:24:07

标签: c++

如何使用C ++托管代码暂停程序几毫秒? 我试过Sleep()但是当我包含winbase.h文件时它没有用,我收到了很多编译错误!

for(int i=0; i<10; i++)
 {
   simpleOpenGlControl1->MakeCurrent();
  System::Threading::Thread::Sleep(100);
      theta_rotated += 2.0* 3.141592653/(double)Model->size()/10.0;

  simpleOpenGlControl1->Invalidate();
 }

private: System::Void simpleOpenGlControl1_Paint(System::Object^  sender, System::Windows::Forms::PaintEventArgs^  e) 
         {

             Gl::glMatrixMode(Gl::GL_MODELVIEW);
             Gl::glLoadIdentity();
             Gl::glClearColor(1, 1, 1, 1);
             Gl::glClear(Gl::GL_COLOR_BUFFER_BIT | Gl::GL_DEPTH_BUFFER_BIT);
             camera->Tellgl();
             Gl::glRotated(Angle,X,Y,Z);
             RenderModels();
         }
void RenderModels(void)
{
    Points = gcnew System::Collections::Generic::List<Point>();
    Point p(0,0) ;
    int t = -5;
    double r = 5;
    double x, z, theta;
    for(int i = 0;i < Model->size();i++)
    {
        theta = i*2* 3.141592653/ (double)Model->size();
        x = r*sin(theta + theta_rotated);
        z = r*cos(theta + theta_rotated);
         Gl::glPushMatrix();
         Gl::glTranslated(x,0,z);
         Model->at(i).Render();
         p.X=x;
         p.Y=0;

         Points->Add(p);
         t +=1;
         Gl::glPopMatrix();
    }
    //simpleOpenGlControl1->Invalidate();
}

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

System::Threading::Thread::Sleep()如另一个答案所述。但是让我警告你,这不准确,而且对于小(毫秒)睡眠是非常不精确的。考虑到您的应用程序与其他应用程序和线程一起运行,并且它们都需要处理器时间。

答案 2 :(得分:-2)

#include <unistd.h>

main() {    
   usleep(2000); // 2 msecs 
}

阅读手册页;-) 男人3睡着了