안녕하세요.
2009 사용중이고, Indy를 사용해서 만들고 있습니다.
테스트 삼아 텔넷으로 접속해서 데이터를 받는것은 아주 잘 되는데요,...
텔넷의 접속을 끊으면 CPU의 부하가 100%에 육박하도록 올라갑니다.
그러다가, 몇 초 후에,..
".... too many consecutive exceptions: 'access violation at 0x00000053: read of address 0x00000053..."
이런 메시지가 뜬 후, 먹통이 되면서 위의 메시지가 정기적으로 반복해서 계속 나옵니다.
쓰레드 상태를 보니, 죽지 않고 계속 살아 있더군요..
그래서, IdTCPServer1Disconnect 부분에,..
((TIdYarnOfThread*)(AContext->Yarn))->Thread->Stop();
((TIdYarnOfThread*)(AContext->Yarn))->Thread->Terminate();
등등 을 줬는데도,..
쓰레드가 죽지 않더군요..
다시 테스트 삼아...
아래와 같이 while문을 넣어놓으니깐, CPU 점유율은 올라가지 않고 정상상태인데,...
계속 while문 안에만 있습니다...
void __fastcall TfrmMain::IdTCPServer1Disconnect(TIdContext *AContext)
{
((TIdYarnOfThread*)(AContext->Yarn))->Thread->Stop();
((TIdYarnOfThread*)(AContext->Yarn))->Thread->Terminate();
while(((TIdYarnOfThread*)(AContext->Yarn))->Thread->Terminated){
((TIdYarnOfThread*)(AContext->Yarn))->Thread->Terminate();
Sleep(1);
}
}
조언 부탁드립니다..ㅠ.ㅠ;...
|