|
안녕하세요~
항상 볼랜드포럼에서 도움 받고 있습니다.
IdUDPServer1UDPRead() 함수로 계속 데이터가 들어오는 상태에서
종료 버튼을 누를 경우 응용프로그램이 즉시 끝날 수 있게 하고 싶은데요~~
계속 데이터가 들어오기 때문에 그대로 멈춰있네요ㅠㅠ
무한루프나 thread 강제종료 이런걸 찾아봐서 적용해봐두 잘 안되네요.
IdUDPServer1UDPRead 함수입니다..
void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender,
TStream *AData, TIdSocketHandle *ABinding)
{
if(AData->Size < 3) return;
memset((void *)&TotStack, 0, sizeof(TotStack));
AData->Read(TotStack, AData->Size);
.
.
.
// 수신 데이터 처리
CodeDisplay(TotStack, 0);
ReceiveDataProcess();
// 메시지 처리
Application->ProcessMessages();
}
제가 해본 방법은 다음과 같아요.
방법이 틀렸는지--; 아님 다른 걸로 IdUDPServer를 종료시켜야 되는건지 알려주세요...
void __fastcall TForm1::BitBtn2Click(TObject *Sender) //종료버튼
{
HWND hWnd ;
HANDLE hdHandle = FindWindow("TForm1", "CNSEM");
DWORD dwPID;
if(hdHandle)
{
GetWindowThreadProcessId(hdHandle, &dwPID);
if(dwPID)
{
hWnd = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
ShowMessage("Close Thread");
TerminateProcess(hWnd, -1);
// CloseHandle(hWnd);
}
Application->ProcessMessages();
}
Close();
}
|