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
[29212] Re:스레드 도움좀 주세요. 너무 힘들어요.
수야!╋ [sooya23] 1482 읽음    2004-03-30 16:22
안녕하세효

수야!╋랍니다.

WaitForSingleObject 함수 아래로 진행이되면 이상한거 같은데요...

씽크로나이즈나 크리티컬과는 전혀 무관한 문제같은데요..

WaitForSingleObject함수 아래를 진행하고 싶으시다면 원하시는 진행사항들이 완료된 후에

SetEvent(m_pPlcMon->Handle);

를 하셔야.. 해당 이벤트를 기다리던 WaitForSingleObject에서 이제 아래로 내려가되 되는구나 하고 내려가게 됩니다.

특정 시간이 지난후에는 이벤트가 없었더라도 진행되기를 원하신다면

WaitForSingleObject함수의 두번째 인자에 대기시간을 넣으시면 됩니다. 단위는 1ms 입니다.(1000 = 1초)

마지막으로 함수를 사용하실때 아무리 영어 헬프라지만 훝어보시면 대략 어떻게 써야되는지는 아실 수 있을테니 한번 찾아보시기를 권장합니다.

수야!╋였습니다.

최상천 님이 쓰신 글 :
: 아래 질문에 대충 썼는데 해결이 안되어서 다시 질문드립니다.
:
: ============================================================================
:
: 메인폼에서 인스턴스로 가지고 있는 RS-232 통신 클래스가 있습니다. ==> m_pPlc
: class TFormMain : public TForm
: {
: public:
:     TPlc *m_pPlc;
:     스레드 *m_pPlcMon;
: };
:
: 이(TPlc) 클래스 메소드중에 아래와 같은 메소드가 있습니다.
: 이 메소드를 실행하는데 약 3초 정도 걸립니다.
: TPlc::SendString
: {
:     g_pCS1->Acquire ();
: .
: .
: .
:     g_pCS1->Release ();
: }
:
: 문제는 스레드함수1이 SendString 함수를 계속적으로 호출하는 기능을 합니다.
:
: m_pPlcMon::스레드함수1
: {
:     //---- Place thread code here ----
:     //AnsiString Str;
:     while (!Terminated)
:     {
:         Str = SendString ();호출
:         if (!Str.IsEmpty())
:             SendMessage (m_hHandle, PLC_RESPONSE, NULL,  (LPARAM)Str.c_str());
:         Sleep (1);
:     }
: }
:
: 메인폼에서 버튼을 누를때 아래와 같습니다.
: 위에 스레드1을 죽이죠.
: void __fastcall TFormMain::ButtonClick()
: {
:     if (m_pPlcMon)
:     {
:         m_pPlcMon->Terminate ();
:         WaitForSingleObject ((HANDLE)m_pPlcMon->Handle, INFINITE);
:         delete m_pPlcMon;
:         m_pPlcMon = NULL;
:     }
: }
:
: 그런데 버튼만 누르면 WaitForSingleObject 함수 아래로 진행이 안되네요.
: 많은 방법을 다 동원 해 봤지만 도저히 해결을 할 수가 없는데...
: 스레드가 가 Critical Section 내부에 들어갔을때 m_pPlcMon->Terminate (); 이 부분이 문제가
: 되는건지....Synchronize 써도 마찬가지고...
:
: 이게 왜 그런지 원인을 아시는분 가르침을 주십시요.

+ -

관련 글 리스트
29211 스레드 도움좀 주세요. 너무 힘들어요. 최상천 1146 2004/03/30
34734     Re:스레드 도움좀 주세요. 너무 힘들어요. 미루 1368 2004/03/31
29212     Re:스레드 도움좀 주세요. 너무 힘들어요. 수야!╋ 1482 2004/03/30
34733         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. 수야!╋ 1261 2004/03/31
34732         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. 김시환 1312 2004/03/30
34731         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. Builder MySelf 1076 2004/03/30
34730         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. Builder MySelf 1087 2004/03/30
34729         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. 최상천 1262 2004/03/30
34728         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. 최상천 1141 2004/03/30
34727         Re:Re:스레드 도움좀 주세요. 너무 힘들어요. Builder MySelf 1147 2004/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.