|
GetTickCount()의 return값은 DWORD(unsigned int 32 bit) 이죠.
DWORD의 range(msec 단위)의 최대값을 날짜로 환산해 보세요.
김시환 님이 쓰신 글 :
: 답변은 감사합니다.
: 그런데 해결방법도 중요하지만 원인을 좀 알고 싶은데요.. 해결하는거야 어떻게든 가능하지만 원인을 아는게 프로그램하는 사람으로서 더 필요한 정보일것 같아서요..
:
: Lyn 님이 쓰신 글 :
: : GetTickCount64로 바꾸면 문제 깔끔하게 해결 ...
: :
: : 김시환 님이 쓰신 글 :
: : :
: : : 샘플시료의 Aging을 위해 장비를 오랜시간 돌리는 프로그램을 작성하고 샘플시료를 테스트하고 있습니다.
: : : Aging 중간 중간에 Aging 상태에 대한 내용을 읽어와서 데이타를 화면에 보여주는 프로그램입니다.
: : : Aging 을 하면서 데이타를 읽어내는 것은 Thread를 사용하고 있습니다.
: : :
: : : while(!Terminated)
: : : {
: : : m_dfDelayTime = (GetTickCount() / 1000.0) - m_dfStartTime ;
: : :
: : : if(m_dfDelayTime > 10) // 10초에 한번씩 시스템데이타를 읽어 온다.
: : : {
: : : Data_Read() ;
: : :
: : : m_dfStartTime = GetTickCount() / 1000.0 ;
: : : }
: : :
: : : if(user_stop == true) this->Terminate() ;
: : :
: : : if( g_dfTestTime <= 0) Sample_Test()
: : : }
: : :
: : : 대충 위의 코드와 같은 동작이 쓰레드에서 구동중입니다. 지금 거의 1400 시간 정도 돌아가고 있는데.. 문제는 지금까지 잘 실행되던 Data_Read() 함수가 호출이 안돼고 있다는 것입니다. 그래서 처음에는 쓰레드가 뻣었나 싶어서 시스템을 정지시키려고 했다가 혹시나 하는 맘으로 Sample_Test() 라는 함수가 진행되는지 지켜보았습니다. 아니나 다를까 Sample_Test() 함수는 정상적으로 실행이 되고 있었습니다.
: : :
: : : 여기서 의문
: : :
: : : 10초에 한번씩 시스템 데이타를 읽어오기 위한 함수가 왜 호출이 안돼느냐 하는 문제입니다.
: : : 처음에는 m_dfStartTime 를 초기화하지 않았다고 생각했는데 코드를 보니 그것도 아니더군요..
: : : GetTickCount() 함수를 보면 49.7 일 후에 다시 0으로 회귀하는 것으로 되어 있어서 m_dfStartTime 변수를 계속해서 갱신해 주면 문제가 없을것 같은데.. 뭐가 문제일까요??
: : :
: : : 테스트 진행중이라 디버깅도 못해 보겠고.. 이 문제를 해결하려고 다른 PC를 근 50일을 돌려 볼수도 없고.. 참 애매 합니다.
: : :
: : :
|