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
[24594] Re:[질문]핸들을 놓치는 문제..
유영인.Chris [cuperido] 669 읽음    2003-03-04 13:56
Synchronize 가 되지 않아서 그런게 아닌가 싶습니다. Thread에서 VCL 객체로 접근하려면, Synchronize를 항상 시켜 주셔야 합니다. 이 것은, 쓰레드를 처음 만들면 나오는 소스 파일에 주석에도 붙어 있습니다.

MyPrg(no);

호출을

Synchronize(MyPrg(no));

로 해주신 다음 결과를 보시는 것도 좋으실것 같습니다.
아래는 Synchronize의 Help 파일입니다.

void __fastcall TMyThread::PushTheButton(void)

{
  Button1->Click();
}

void __fastcall TMyThread::Execute()
{
  ...
  Synchronize(PushTheButton);
  ...
}



하안인 님이 쓰신 글 :
: CRITICAL_SECTION CS;
: 폼에
: void __fastcall TForm1::Update(int no,String Msg)
: {
:  EnterCriticalSection(&CS);
:  ListBox1->Items->Add(IntToStr(no)+Msg);
:  LeaveCriticalSection(&CS);
: }
:
: int __fastcall TyThread::Execute()
: {
:   while(true)
:   {
:     MyPrg(no);
:   }
: }
: int __fastcall TyThread::MyPrg(int no)
: {
:   ....
:   Form1->Update(no,msg);
:  .....
:   Form1->Update(no,msg);

: }
:
: 폼에 페이지컨트롤을 하나 놓고 페이지를 여러개 놓은 중에 하나의 페이지에 ListBox
: 가 있습니다.
: 이 ListBox의 Item에 여러개의 쓰레드가 내용을 추가하려고 합니다.
: 그런데 쓰레드 하나만 띄워놓고도 데이타를 추가하면 원도우 핸들을 읽어버리는것 같습니다.
: Append되는 페이지의 컨트롤을 누르면 그때부터 그 페이지컨트록은 먹통이 됩니다.
: 페이지 컨트롤의 한 페이지(업데이트되는)를 클릭하면 내용이 없고 자기 맘대로
: 페이지 컨트롤이 움직입니다.(쓰레드에서 업데이트 할때)
: 위와 같이 쓰레드를 구현하는것이 틀린건가요.
:
:
: 참고로 쓰레드에서 폼의 컨트롤에 업데이트 하는 부분을 삭제후 테스트 하면
: 정상적으로 작동합니다.
: 그리고 페이지 컨트롤이 아닌 폼에 ListBox를 직접적으로 올려 놓으면
: 정상작동을 하는데..
: 페이지 컨트롤에서 업데이트되는 페이지가 선택안되어 있어도 상관없이
: 업데이트되어야 하는것 아닌가요.
:
: 그럼, 조언 부탁드립니다.
:

+ -

관련 글 리스트
24522 [질문]핸들을 놓치는 문제.. 하안인 607 2003/02/27
24594     Re:[질문]핸들을 놓치는 문제.. 유영인.Chris 669 2003/03/04
24603         Re:Re:[질문]핸들을 놓치는 문제.. 하안인 607 2003/03/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.