阅读:1290回复:3
Sleep()应用中出现在问题:
Sleep()的应用出这样的问题(代码如下):
void CSSDlg::OnTest() { //test按钮响应 // TODO: Add your control notification handler code here for(int m=0;m<100;m++) { UpdateData();//这条语句不影响 m_iNo=m; //编辑框控件对应成员变量 UpdateData(FALSE); Sleep(10); } } 程序执行时看不出每一个数字递增的延时,并不是间隔太小(加大Sleep()间隔一样的结果!),而是在全部延时完后,数字从0变到99 只要它实现延时是没问题了,但关键是我要用它来实现定时采样, 不知道是不是它在延时这前发的消息还没来得及被系统响应就已经进入了Sleep(),而得不到正确的结果! [编辑 - 5/16/03 by cszhaoqm] |
|
沙发#
发布于:2003-05-16 21:48
我好像解决了一点点相关的问题:
用多线程,在文本框内显示从0到100,用Sleep延时! void CMultiProcess1Dlg::OnStart() { // TODO: Add your control notification handler code here // Start to display hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,&ThreadID); } void ThreadProc() { CString m_time; for(int i=0;i<100;i++) { m_time.Format(\"%d\",i); ::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,m_time); Sleep(20); } } void CMultiProcess1Dlg::OnStop() { // TODO: Add your control notification handler code here TerminateThread(hThread,1); } [编辑 - 5/16/03 by cszhaoqm] |
|
板凳#
发布于:2003-05-16 20:12
To:zshuang
多谢大侠指点! \"手工写编辑框的值\",我试过了,可以改变的,现在的问题就是一旦Sleep它就不做别的事了,全部sleep完后才写编辑框,不知是否需要用多线程,是不是Windows的消息队列处理不过来? 还请高手明示! 做一下修改后再测试: void CSSDlg::OnTest() { //test按钮响应 // TODO: Add your control notification handler code here CString str; for(int m=0;m<100;m++) { UpdateData();//这条语句不影响 m_iNo=m; //编辑框控件对应成员变量 UpdateData(FALSE);//这条语句提前 str.Format(\"%d\",m); MessageBox(str);//加上这条语句就可以看到编辑框的 //数字 在改变!! Sleep(10); } } [编辑 - 5/16/03 by cszhaoqm] |
|
地板#
发布于:2003-05-16 17:35
建议你试试手工写编辑框变量的值,看看有没有变化。
|
|
|