如何使用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();
}
答案 0 :(得分:4)
你想要System::Threading::Thread::Sleep()
。
http://msdn.microsoft.com/en-us/library/system.threading.thread.sleep.aspx
答案 1 :(得分:3)
System::Threading::Thread::Sleep()
如另一个答案所述。但是让我警告你,这不准确,而且对于小(毫秒)睡眠是非常不精确的。考虑到您的应用程序与其他应用程序和线程一起运行,并且它们都需要处理器时间。
答案 2 :(得分:-2)
#include <unistd.h>
main() {
usleep(2000); // 2 msecs
}
阅读手册页;-) 男人3睡着了