송신영님..
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초 주기로 계속돌려야 하는데 어떻게 해야 하나요.