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
[70971] Re:쓰레드가 자동 종료되는 경우가 있나요??
송신영 [palindrome] 4027 읽음    2014-02-28 11:17
프로그램 내부에 문제가 발생되면 Thread가 죽어버립니다.
while 구문을 try catch 로 감싸서  catch 에서 exception 내용을 확인해보세요.

newhuni 님이 쓰신 글 :
: 안녕하세요. 조언좀 구하고 싶어서 글을 올립니다.
:
: 쓰레드를 실행시켜 PLC와 통신을 하여 데이타를 읽어오는 프로그램을 작성했습니다.
: 문제는 겉보기에는 잘 동작하는데 중간에 쓰레드만 죽어버리는 현상이 발생합니다.
:
: 아래 코드에서 "여기(1)" 부분 말고는 쓰레드를 Terminate()시키는 코드가 소스에서 존재하지 않습니다.
: 그리고 쓰레드에서 PLC와 통신하다 문제가 발생하면 다시 PLC와 통신을 시도하는 함수 타이머를 Enable시키고
: 쓰레드를 종료합니다.
:
: 그런데... 통신 재연결 타이머도 실행되지 않은 상태에서 쓰레드가 죽어버리는 현상이 발생합니다.
: 에러메시지도 발생하지 않고 프로그램을 처음 실행하면 잘 동작하다 어느순간 쓰레드만 죽어버리는 것 같습니다.
: 어떤 경우에 프로그램을 실행되고 쓰레드만 죽을 수 있을까요?
: 만약 이런일이 발생되면 어떻게 예외처리를 할 수 있을까요? 쓰레드를 계속 감시해야 하나요?
:
: 고수님의 조언 부탁드립니다.
:
: //-----------------------------------------------------------------------
: __fastcall TReadData::TReadData(bool CreateSuspended)
:     : TThread(CreateSuspended)
: {
:         FreeOnTerminate = true; // 쓰레드 자동 메모리 해제
: }
: //-----------------------------------------------------------------------
: void __fastcall TReadData::Execute()
: {
:         while(!Application->Terminated && !this->Terminated)
:         {
:     WaitForSingleObject(NULL, 2000);  // 2초간 지연
:     if(ReadData() == false){      // 통신 끊기면 쓰레드 종료
:             this->Terminate(); // <---- 여기(1)
:     }
:         }
: }
: //-----------------------------------------------------------------------
: bool __fastcall TReadData::ReadData()
: {
:         for(int i=0;i<100;i++)
:         {
:              :
:              : (작업수행)
:              :
:              if(PLC와의 통신 연결 실패시)
:              {
:                    // PLC와의 통신 재연결 함수 호출 타이머 작동 후 리턴
:                    return false;
:              }
:         }
:         return true;
: }
: //-----------------------------------------------------------------------
:

+ -

관련 글 리스트
70962 쓰레드가 자동 종료되는 경우가 있나요?? newhuni 2836 2014/02/27
70971     Re:쓰레드가 자동 종료되는 경우가 있나요?? 송신영 4027 2014/02/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.