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
[41678] Re:저도 질문이 있습니다.. 도움을 주시길 바랍니다..^^
WARSHIP [warship] 767 읽음    2005-08-26 20:08
정재훈 님이 쓰신 글 :
: 메인폼에서 A라는 작업을 하는 도중 B작업의 결과를 받아야 A라는 작업을 계속할 수 있는 경우인데요..
: B의 결과가 나올때 까지 A를 대기시켜야 합니다. 그러나 대기중에도 C라는 작업을 계속 해서 돌려야 합니다.
: 쉽게 생각해서 C를 쓰레드로 돌리고 메인을 Waitfor함수로 대기시키면 된다고 생각했었는데..
: 문제는 C라는 작업이 메인폼의 화면 업데이트를 써야하는 녀석이라...
: 메인폼은 계속 업데이트 되면서 B의 결과를 대기해야 하는 상황입니다..
: Waitfor함수로 대기시키니 C의 작업을 볼수없는...문제가...생깁니다.
:
: 설명이 되었을지 모르겠네요.
: 해결방안이 있을까요?

설명이 애매해서.
A와 C가 동시에 작동을 하는것인지.?
C는 항상 돌고 있고.
A는 B가 끝나야 돈다는것인지. 좀 헷갈리네요 ^^;
우선은 아래와 같이하시고
C라는 작업이 작업량이 많다면
우선은 C라는 작업 내에서 작업 중간에 메세지 뽐뿌질을 좀 해주시구요
(Application->ProcessMessage();)(API : PeekMessage(~))
스레드는 최후의 보루가 아닐지 생각해봅니다. ㅡ,.ㅡ;

B의 작업 결과가 어떤데이타인지 모르겠지만요.
사용자 정의 메세지를 사용하면 될거 같습니다.

1.
#define WM_B_RESULT (WM_USER+1)
이렇게 선언하시고

2.
B가 작업을 끝내면 A에 메시지를 보내는 형식으로요.
SendMessage( a의 윈도우 핸들, WM_B_RESULT , 0,0 );

3.
// A의 클래스 선언부에서는
class A
{
public:
    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_B_RESULT,TMessage,On_B_Result)
    END_MESSAGE_MAP(TForm)
}

4.
// A의 구현부에서는
void __fastcall A::On_B_Result(TMessage &msg)
{
     msg 처리..
}

+ -

관련 글 리스트
41672 저도 질문이 있습니다.. 도움을 주시길 바랍니다..^^ 정재훈 721 2005/08/26
41701     Re:저도 질문이 있습니다.. 도움을 주시길 바랍니다..^^ 정재훈 769 2005/08/29
41678     Re:저도 질문이 있습니다.. 도움을 주시길 바랍니다..^^ WARSHIP 767 2005/08/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.