Win2000Pro.下,我的程序时间运行〉10000秒时自动出错,请问是何故? 每运行到10000秒时,出现意外错误,我在其中使用了DWORD Start=GetTickCount(),DWORD Now=GetTickCount()函数,一旦(Now-Start)>10000时,就出错,奇怪得很! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 long i=0; Start=GetTickCount(); //Start,Now 是DWORD类型 Now=GetTickCount(); //CString str; for(int j=0;j<10000;j++) sequence[j]=0; while(((Now-Start)/1000)<(TotalTime*60)) //总的运行时间 { double ff=FrequencyArray[i]; NumOfFreNow=i; str="before Motor_zero "; file.Write(str,str.GetLength()); Motor_Zero(); str="behind Motor_zero "; file.Write(str,str.GetLength()); if(ff>0) { //str.Format("Frequency=%f",ff); //file.Write(str,str.GetLength()); CWinThread* pChildThread=AfxBeginThread(Respond,&ff,THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED,0); pChildThread->ResumeThread(); result=WaitForSingleObject(pChildThread->m_hThread,INFINITE); //程序大概在这里意外中断的,后面的语句没有执行了 sequence[i]=1; } i++; i=i%LenOfFrequencyArray; if(i==LenOfFrequencyArray) i=0; Now=GetTickCount(); }程序的大概意思是:在指定的一段时间内(TotalTime,单位:分钟),执行Respond这个线程,我发现:每当(Now-Start)>10000,程序就会出错。加入了一些跟踪语句,发现错误发生在一个Respond正常return之后但是一个新的Respond开始之前。百思不得其解,请大家来帮忙了! 如果找不到原因,可以绕开,使用CTimeSpan不就行了。 补充:result=WaitForSingleObject(pChildThread->m_hThread,INFINITE); //程序大概在这里意外中断的,后面的语句没有执行了我对这个语句作了一些纪录: result=WaitForSingleObject(pChildThread->m_hThread,INFINITE); if(result==WAIT_OBJECT_0) { str="WAIT_OBJECT_0"; file.Write(str,str.GetLength()); }结果,我发现在时间>10000秒之后,前面的Respond是正常结束的,但是却没有发现“WAIT_OBJECT_0”语句的纪录,说明result!=WAIT_OBJECT_0或者别的什么原因,反正错误大概就出在这里了,但是是什么错误以及是什么导致的错误,我还是没有想明白,请大家一起来讨论哦, 另外,错误的提示是: File:thrdcore.cpp Line:113 调试一下,看看pChildThread->m_hThread的值是否为空?? 但是,为什么到了某一个时刻它就工作不正常了呢,前面的每一次的pChildThread的结果都是正确的阿! MFC消息映射的问题 如何合并多个C++编写的Win32 Dll成一个Dll 缓冲区中的位图如何现实 视频捕捉的格式设置问题 vc 6.0 安装SP6之后为什么没有显示安装了SP6? 用vc开发c语言时的一个问题 请问windows程序设计(第5版)的电子版(chm格式)和原书相比全不全? 想做一个基于对话框的多线程程序,请问应该用模式对话框还是非模式对话框? 请问用VC如何做出漂亮的skin? 能不弹出"应用程序错误"这个框? 深入完成端口!一套完成端口的FRAMEWORK。使用方法太简单了。 warfare 世界地图 请来拿分
Start=GetTickCount(); //Start,Now 是DWORD类型
Now=GetTickCount();
//CString str;
for(int j=0;j<10000;j++)
sequence[j]=0;
while(((Now-Start)/1000)<(TotalTime*60)) //总的运行时间
{
double ff=FrequencyArray[i];
NumOfFreNow=i;
str="before Motor_zero ";
file.Write(str,str.GetLength());
Motor_Zero();
str="behind Motor_zero ";
file.Write(str,str.GetLength());
if(ff>0)
{
//str.Format("Frequency=%f",ff);
//file.Write(str,str.GetLength());
CWinThread* pChildThread=AfxBeginThread(Respond,&ff,THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED,0);
pChildThread->ResumeThread();
result=WaitForSingleObject(pChildThread->m_hThread,INFINITE);
//程序大概在这里意外中断的,后面的语句没有执行了
sequence[i]=1;
}
i++;
i=i%LenOfFrequencyArray;
if(i==LenOfFrequencyArray) i=0;
Now=GetTickCount();
}
程序的大概意思是:在指定的一段时间内(TotalTime,单位:分钟),执行Respond这个线程,我发现:每当(Now-Start)>10000,程序就会出错。加入了一些跟踪语句,发现错误发生在一个Respond正常return之后但是一个新的Respond开始之前。百思不得其解,请大家来帮忙了!
//程序大概在这里意外中断的,后面的语句没有执行了
我对这个语句作了一些纪录:
result=WaitForSingleObject(pChildThread->m_hThread,INFINITE);
if(result==WAIT_OBJECT_0)
{
str="WAIT_OBJECT_0";
file.Write(str,str.GetLength());
}
结果,我发现在时间>10000秒之后,前面的Respond是正常结束的,但是却没有发现“WAIT_OBJECT_0”语句的纪录,说明result!=WAIT_OBJECT_0或者别的什么原因,反正错误大概就出在这里了,但是是什么错误以及是什么导致的错误,我还是没有想明白,请大家一起来讨论哦,
File:thrdcore.cpp
Line:113