좋은 지적 감사합니다.
장성호 님이 쓰신 글 :
: 송신영님..
: 1초짜리 timer 이벤트 핸들러에서 작업이 10초 걸린다고 해서
: 반드시 이벤트핸들러가 여러번 반복호출되는것이 아닙니다.
:
: timer이벤트 핸들러함수가 끝나기전에
: 현재 thread의 메세지큐의 메세지 pump로직이 있는경우에만 해당됩니다.
:
: VCL에서는 Application->ProcessMessages()라는 함수가
: 메세지큐에서 메세지를 가져와서 해당윈도우프로시져로 dispatch하는 역활을 하는데..
: 이 역활을 timer이벤트 핸들러 안에두게되면..
: timer이벤트에서 작업중에 또 timer이벤트가 발생할수 있는것이지요
:
: 정확히 알고계신는지는 모르겠으나 답글에 표현은 정확하지 못했습니다.
:
: 하안인님..
: 손신영님 말때로 timer가 죽지는 않습니다.
: db쪽은 잘모르는데..
: timer이벤트에서 하는 db관련된 작업을 하시는데..
: db쪽에서 발생하는 에러메세지 같습니다.
: db가 shutdown진행중인데 db에 무엇인가 다른 작업을 하려고 하는것은 아닌지요?
:
: 그럼..
:
:
: 송신영 님이 쓰신 글 :
: : 타이머 내부에 코드를 정상적으로 작성하셨다면 몇일이 지나도 타이머는 죽지 않습니다.
: : Timer 내부의 코드를 다시한번 확인하세요...
: : 1초에 한번 호출될 경우 Timer 함수에서 1초안에 작업을 마무리 못할 경우
: : 같은 함수를 중복적으로 호출된다는 사실을 인지하셔야합니다.
: : 만약 Timer 함수를 한번 실행하는데 10초가 걸린다고 가정하면
: : 한번에 같은 함수가 10개가 실행된다고 보시면됩니다....
: : 참고 :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=981
: :
: : DB를 사용하니 DB처리를 잘못하는 부분이 있을수 있구요..
: : 내부에서 메모리를 할당한다면 delete 처리가 잘되는지 확인해야하구요..
: :
: :
: : 하안인 님이 쓰신 글 :
: : : 데이타베이스에 있는 내용을 실시간으로 검색하기 위해서
: : : Timer을 1초주기로 계속 사용하도록 하고
: : : 그안에서 테이블을 검색하는 루틴을 만들어 놓았습니다.
: : :
: : : 그런데 12시간 정도 타이머가 돌아가다가는 죽어 버리네요.
: : : 메시지는
: : : dm -> Timer1 Msg:SHUTDOWN이 진행 중입니다.
: : : 라는 메시지가 나옵니다.
: : :
: : : 타이머를 1초 주기로 계속돌려야 하는데 어떻게 해야 하나요.