|
안녕하세요.. 이필호입니다.
제가 지금 하고 있는 일은 NT 의 Service 프로그램을 하고 있습니다.
TService에 TServerSocket을 올려놓구...
TServerSocket에 클라이언트가 접근해 오면 Thread를 생성해서 이를 돌리는데...
이 Thread가 하는 일은 DB에 접근해서 관련 자료를 가져오는 겁니다.
그런데, 이때 문제가 발생하네요...
클라이언트에서 접근해 오면 Thread가 생성되는것까지는 되는데.. TADOConnection.. 컴포넌트를 이용해서 DB에 접근하려고 하면 Thread가 딱 멈추네요.... 디자인타임에는 TADOConnection.. 컴포넌트를 테스트해보았는데.. 전혀 문제가 발생하지 않구요... 런타임시에 TADOConnection 을 Open() 하면 정상적으로 연결이 되지 않구요.. 으...
정리!!
1. TService 를 만들었음..
2. TServerSocket을 올려놓았음..
3. TServerSocket->ServerType = stThreadBlocking;
4. TServerSocket의 ServerSocketGetThread() 이벤트에서 Thread를 생성함...
4.1 위에서 생성한 Thread 의 맴버변수로...TADOConnection *FADOConnection; 를 선언함..
4.2 Thread 생성자에서 FADOConnection 를 초기화...
4.3 Thread 실행자.. 정확하게.. ClientExecute() 함수에서..
원래는 Execute() 함수인데.. 이 함수가 호출하면서 ClientExecute()함수를 호출해 준다더군요
4.4 ClientExecute() 함수안에서..
4.4.1 FADOConnection->Open(); 을 실행....
4.4.1 까지 오면 Thread 가 정지하는 것 같아요...
그래서... 질문은...!!!
1. TADOConnection 혹은 TADO... 류 컴포넌트가 Service 혹은 Thread 에서 동작하지 않는 이유를 모르겠어요..
2. TService를 종료할때,,, TServerSocket에서 만든 Thread를 모두 종료해야지.. 정상적으로 Serivce가 종료하는데... 이렇게 종료되지 않으니... TService가 정상적으로 종료되지 못하네요...
TServerSocket에서 생성된 Thread 를 몽땅 찾아서 종료시키는 방법을 알고 싶어요...!!!
3. Thread 를 DEBUGGING 하는 방법도 알구 싶어요...
소스를 올리지 못하는점 이해해 주세요... 보안상... 히히...^^;
위의 두가지 문제에 대해서 답변해 주세요... 으.. 정말 급합니다...
참.. BCB5 Ent 버전입니다...
|