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
[25976] 쓰레드 안에 함수를 넣었을때 생기는 문제입니다. 답변 부탁드립니다.
최민우 [] 732 읽음    2003-06-17 13:47
안녕하세요.

우선 프로그램의 구조부터 말씀드리겠습니다.

Form1 와 Form2로 이뤄져 있고..

Form1에는 여러가지의 컴포넌트들과 변수들이 있습니다.

제가 하고싶은 부분은, Form1에서 ShowModal()로 Form2를 호출하고..

Form2에서는 폼이 생성되자마자(OnShow, 혹은 OnActivate시에..) 쓰레드를 생성하여 Form1에 있는 함수를 호출하고자 합니다.

이렇게 폼을 구성한 이유는 Form1에서 특정 버튼이 눌렸을 때 Form2가 Modal로 떠서 Form1의 엑세스를

불가능하게 하고, Form2에서는 Form1의 함수를 호출하여 Form1의 private 변수와 컴포넌트를 변경하기 위해서입니다.

소스를 대략적으로 표현해보자면..

/***** Form1 ******/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Form2->ShowModal();
}

void __fastcall TForm1::FTest(int temp)
{
   AnsiString test;
  
   value = temp;   // private 속성의 value
   Label1->Caption = test;
  
   for(int i = 0 ; i < 10 ; i++)
      ;
}


/***** Form2 ******/
__fastcall TTestThread::TTestThread(bool CreateSuspended)
   : TThread(CreateSuspended)
{
   Priority = tpIdle;
}

void __fastcall TInitDataThread::Execute()
{
   FreeOnTerminate = true;
   Form1->FTest(10);
   Form2->Close();
}

void __fastcall TFileManagerWaitingForm::FormActivate(TObject *Sender)
{
   TestThread = new TTestThread(false);
}


즉 Form1에서 버튼을 누르면 Form2를 Modal로 열고, Form2가 열리자마자

쓰레드를 생성하여 Form1의 FTest함수를 호출하는 루틴입니다.

이 외에 다른 쓰레드는 사용하지 않습니다.

문제는 저렇게 표현했을 때(실제로는 더 많은 컴포넌트들과 변수들이 관계됩니다.)

Form1의 내용이 정상적으로 바뀌지 않는다는 것입니다.

Form2에서 OnActivate부분의 쓰레드 생성부분을 삭제하고 그 부분에 Form1->FTest(10); 을 넣으면

정상작동을 하는데.. 이상하게도 쓰레드를 이용하면 안된다는것입니다.

ShowModal로 Form2를 호출했으니 Form1이 실행되면서 변수가 중첩되어 발생하는 증상도 아니고..

답답합니다.. 그래서 이렇게 도움을 요청합니다..

그럼 조언 부탁드릴께요..^^

+ -

관련 글 리스트
25976 쓰레드 안에 함수를 넣었을때 생기는 문제입니다. 답변 부탁드립니다. 최민우 732 2003/06/17
25986     Re:쓰레드 안에 함수를 넣었을때 생기는 문제입니다. 답변 부탁드립니다. 임문환.실업자 1109 2003/06/17
25999         Re:Re:쓰레드 안에 함수를 넣었을때 생기는 문제입니다. 답변 부탁드립니다. 최민우 774 2003/06/18
26006             Re:Re:Re:쓰레드 안에 함수를 넣었을때 생기는 문제입니다. 답변 부탁드립니다. 임문환.실업자 909 2003/06/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.