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
[20483] WaitForMultipleObjects()사용시에 문제가 있습니다. 답변좀 부탁드립니다.
초자순이 [] 1455 읽음    2002-07-29 15:35
안녕하세요

알고 싶은게 있어서 이렇게 글을 올립니다.

formcreate()
{
   주스레드가 돕니다.

   부스레드 4개를 만들어서 돕니다.

   WaitForMultipleObjects()를 써서 주스레드를 부스레드가 끝날때까지 기다리게 합니다.

   부스레드 4개가 다 terminate되면

   주스레드가 동작합니다.
}

전체적인 루틴은 이렇습니다.

잘 돌아갑니다.

근데 부스레드에서

Form1->ListBox1->Items->Add("Thread Number = " + aa);   //여기서 aa는 AnsiString이다.

이런식으로 Form1에 접근할려고 하면 부스레드부분에서 스레드가 멈춥니다.

즉 파일 에세스, DB 에세스할때는 아무이상없습니다... 다른 연산을 할때도 아무이상없다가

Form1에 있는 컴포넌트를 실행할라구 하면 그냥 멈처버립니다.

제 생각은 주스레드가 WaitForMultipleObjects()로 인해서 기다리고 있을때 Form1에 있는 컴포넌트 실행하는것두 영향을 받는것 같습니다.

주스레드에서 WaitForMultipleObjects()를 안쓰구 부스레드만 돌리면 아무문제없이 돌아가는데

WaitForMultipleObjects()를 쓰면 그렇게 멈쳐버립니다.

혹시나 해서 SetEvent(hEvent)로 이벤트를 사용하고 WaitForSingleObject(hEvent,INFINITE);를 사용해보았습니다.

그래도 또한 부스레드에서 Form1에 접근할려고 하면 부스레드부분에서 스레드가 멈쳐버립니다.

이유가 무엇인지 잘 모르겠구요.

Form1에 있는 컴포넌트를 실행하고 싶은데 방법이 없을까요?

전체적인 루틴을 바꾸고 싶지은 않습니다.




+ -

관련 글 리스트
20483 WaitForMultipleObjects()사용시에 문제가 있습니다. 답변좀 부탁드립니다. 초자순이 1455 2002/07/29
20508     Re:WaitForMultipleObjects()사용시에 문제가 있습니다. 답변좀 부탁드립니다. 왕대박 1670 2002/07/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.