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
[29090] [질문] Indy Thread에서 동기화에 관련된 질문입니다.
초보 [] 1305 읽음    2004-03-18 17:02
파라미터를 갖는 Method를 동기화하는 방법에 대해 고심하던 중

TIdThread내 재정의된 Synchronize(TMethod& Method) 메소드를 사용하여

파라미터를 갖는 일반 메소드(TNotifyEvent Type을 사용하여 StringList를 넘기는 방법을 구상중) 를

동기화하기 위하여 아래와 같은 코드를 작성하여 테스트 도중 문제가 발생합니다.

class TIdThreadTest {
    TIdTCPClient *Socket;

    void __fastcall DoSync(TIdPeerThread* AThread);
       
public :
    __fastcall TIdThreadTest();
    TNotifyEvent OnSyncFunc;
};


void __fastcall TIdThreadTest::DoSync(TIdPeerThread* AThread)
   TMethod AMethod;
   TStringList *ParamList = new TStringList;

   //ParamList 할당
   ...

   if(OnSyncFunc) {
      AMethod->Code = &OnSyncFunc;
      AMethod->Data = ParamList;
     
      AThread->Synchronize(AMethod);     //이 부분에서 Access Violation 에러가 발생합니다...
   }
   delete ParamList;
}

....
class TestForm : TForm {
   TIdThreadTest* AIdThreadTest;

};

__fastcall TestForm::TestForm(TComponent *Owner)
   : TForm(Owner)
{
   AIdThreadTest = new TIdThreadTest();
   AIdThreadTest->OnSyncFunc = SyncFunc;   
}

void __fastcall TestForm::SyncFunc(TObject *ParamList)
{
    //Main Thread내 VCL Handling 작업
    ...
}

이러한 경우 어떻게 해결해야 할지 고수님들의 한 수 가르침 부탁드립니다....

참고로 Indy버전은 9.00.14 버전입니다.

+ -

관련 글 리스트
29090 [질문] Indy Thread에서 동기화에 관련된 질문입니다. 초보 1305 2004/03/18
29091     Re:자답...... 초보 1336 2004/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.