C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[48018] Re:[질문] 여기서 WaitForSingleObject를 쓴다면...
★래미★ [jackey9] 2591 읽음    2007-02-07 18:18
찾아보니 WaitForSingleObject를 쓰면 어떨까해서요..
여기서 를 쓴다고 하면...

void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender,
:       TStream *AData, TIdSocketHandle *ABinding)
: {
:     if(AData->Size < 3) return;
:
:     memset((void *)&TotStack, 0, sizeof(TotStack));

                   /////////////////////////////여기에 이런식으로 쓰는게 맞는지요... 실력은 없구 맘만 조급하네요 ㅠㅠ

DWORD ret;

while(!Terminated)
{
    ret = WaitForSingleObject((HANDLE)ImpThread -> Handle, 1000);

    switch(ret)
    {
        // 커널객체가 시그널되기 전에 주어진 시간초과간격이 모두 지났다.
        case WAIT_TIMEOUT :
              return;
        default :
              continue;
    }
}


:              .
:              .
:              .
:     // 수신 데이터 처리
:     CodeDisplay(TotStack, 0);
:     ReceiveDataProcess();
:
:     // 메시지 처리
:     Application->ProcessMessages();
: }



★래미★ 님이 쓰신 글 :
: 안녕하세요~
: 항상 볼랜드포럼에서 도움 받고 있습니다.
:
: 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();
: }

+ -

관련 글 리스트
48015 [질문] IdUDPServer에서 UDP Read에서 빠져나갈 수 있게 해결해주세요ㅜㅡ ★래미★ 1355 2007/02/07
72312     Re:[질문] IdUDPServer에서 UDP Read에서 빠져나갈 수 있게 해결해주세요ㅜㅡ 박영목.월천 1784 2015/01/31
48018     Re:[질문] 여기서 WaitForSingleObject를 쓴다면... ★래미★ 2591 2007/02/07
48016     Re:[질문] IdUDPServer에서 UDP Read에서 빠져나갈 수 있게 해결해주세요ㅜㅡ danga80 1379 2007/02/07
48017         IdUDPServer->Active = false; 그걸로는 안되더라구요 ㅠㅠ ★래미★ 1984 2007/02/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.