|
논리적인 오류는 맞습니다. 다만 Overflow 의 문제는 아닙니다.
이경문님의 답변에서 힌트를 얻었습니다.
GetTickCount 함수는 어차피 Overflow 가 되면 0으로 초기화 시키고, 아래 변수들 중에서 m_dfDelayTime 은 제가 일부러 double 로 선언했기 때문에 Overflow는 발생하지 않습니다.
문제는 1193시간이 지난후부터 m_dfDelayTime 값이 계속 음수가 나오기 때문에 if(m_dfDelayTime > 10) 문이 참이 될수 없다는 것이네요.. 결국 m_dfDelayTime 이 음수가 되면 m_dfStartTime 변수를 다시 갱신해 주는 코드가 한줄 필요하네요...
답변해 주신분들 감사합니다. 이래서 토론이 좋은것인가 봅니다. 머리싸매고 토론하다 보면 좋은 결론이 나오네요..
while(!Terminated)
{
m_dfDelayTime = (GetTickCount() / 1000.0) - m_dfStartTime ;
if( m_dfDelayTime < 0) m_dfStartTime = GetTickCount() / 1000.0 ; <-- 한줄추가..
if(m_dfDelayTime > 10) // 10초에 한번씩 시스템데이타를 읽어 온다.
{
Data_Read() ;
m_dfStartTime = GetTickCount() / 1000.0 ;
}
if(user_stop == true) this->Terminate() ;
if( g_dfTestTime <= 0) Sample_Test()
}
|