|
프로그램을 닫기버튼을 누르는데 프로그램이 멈쳐버려요
(그냥 창의 위에 엑스버튼입니다.)
메모리주소못찾는 경고창도뜨구요 별의별창뜨는데
하나하나씩 쫒아가볼려고
하는데 지금 처음문제가
한번누르면 일단 FormCloseQuery함수를
이용해서
타이머연결를 비활성화시키고 통신하는 것들과
연결도 끊고 타이버 스레드도 비활성화시킵니다.
그리고나서 bClose가 ture가 되구
CanClose 가 false가 됩니다
그리고나도 또한번 엑스버튼을누르면
완전히 종료되는건데
void __fastcall TForm_Main::FormClose(TObject *Sender, TCloseAction &Action)
{
StopDBThread(PROC_INFO_ALL);
DeleteTCDV();
map_client.clear();
DeleteSocket();
}
이문을 타면서 완전히 종료가되어야하는데
갑자기 비동기로 실행하는 동안에는 작업을 수행할 수 없습니다
이렇게뜨면서 DeleteDB()에서 멈춰버립니다.
__fastcall TThread_DB::~TThread_DB()
{
CloseHandle(hIOEvent);
hIOEvent = NULL;
list_Query.clear();
DeleteDB();
DeleteCriticalSection(&csLoopQuery);
}
그래서 DeleteDB()로 갔더니 ADOConnection->Close()을 못하고
비동기로 실행하는 동안에는 작업을 수행할 수 없습니다
라는 경고문이 뜨면서 아예 멈춰버리더라구요 꺼지지도않고 실행도안되고
void TThread_DB::DeleteDB()
{
if ( ADOConnection->Connected )
ADOConnection->Close();
delete ADOConnection;
}
제 생각에는 Connection->Close()를 해야하는데
할때 뭐 쿼리문에 있다든지 어떤 수행하라는 명령이나 수행을 해야되서 아니면
어떤이유때문에 Close() 함수를 실행못시키는거같거든요.ㅠㅠ
어떤게 문제인지 힌트라도주시면안댈까요.
|