|
타이머내에서
Timer1->Enabled = false;
try
{
//작업
}
__finally
{
Timer1->Enabled = true;
}
로 코딩하였구요.
DB접속은 devart 의 UniDAC 컴포넌트를 사용해서 오라클에 접속합니다.
UniDAC 에 두가지 옵션이 있는데
Connection을 유지해서 작업하는 것이 있구요.
Connection을 pooling 을 true로 해놓으면 connection 속도가 빨라서
그때 열고 끝나면 닫을 수 있도록 되어 있어서 사용했습니다.
위의 타이머 구조에서 문제가 있을 수 있나요.
돌맹이 님이 쓰신 글 :
: 혹, 3초에 한 번씩 수행하는 작업이 3초를 초과하는 경우가 있지 않을까요?
: 간혹 이렇게 다음 이벤트가 발생할 때까지 수행 이벤트가 끝나지 않으면,
: 이런 상황이 중첩되다 보면 이런 상황으로 도달하는 것으로 알고 있습니다.
:
: 3초마다 계속 DB 접속을 새로하는 것 같은데,
: 한 번 접속 후 계속사용하는 것으로 해도 되지 않을까요? 너무 많은 오버해드가 있을 것 같네요.
: 만약 작업이 오래 걸리면 이 작업은 스레드로 빼고, 타이머 이벤트에서는 스레드에 이벤트만
: 던져주는 방식으로 수정해도 괜찮을 것 같네요.
:
: 도움이 되셨기를...
:
: 하안인 님이 쓰신 글 :
: :
: : c++buider6.0을 사용하고 있습니다.
: :
: : 타이머를 작동해서 3초에 한번씩 데이타베이스에 접근해서 퀴리한 후
: : 데이타베이스를 닫고 종료한후 다시 타이머를 가동해서
: : 반복적으로 일을 수행합니다.
: :
: : 그런데 1~3일정도 프로그램을 실행하면 out of memory 메시지가 나오네요.
: :
: : 변수를 메모리를 할당하지도 않고
: :
: : 퀴리를 돌려서 사용하는것 밖에 없는데요.
: :
: : 어떤 것을 봐야 할까요?
: :
: : 감사합니다.
|