Q&A

  • thread 해결좀 해주세요
type
  TTR_Thread = class(TThread)
  private
    { Private declarations }
    TR        : string;
    DATA      : string;
    FORM      : ^TfrmTestClient;
    D1001     : TR_1001_STRUCT;
  protected
    procedure Execute; override;
  public
    { Public declarations }
    Constructor Create (strTR:string; strData:string;Address:Pointer);
  end;

implementation

Constructor TTR_Thread.Create(strTR:string; strdata:string; Address:Pointer);
begin                  
        TR   := strTR;
        DATA := strData;
        FORM := Address;
        execute; --> 1
end;
procedure TTR_Thread.Execute;
begin
    if (TR = 'D1001')then
    begin
         Move(PChar(DATA)^,PChar(@D1001)^,SizeOf(D1001));
         FORM.SetGridData1(@D1001);
    end; --> 2
end;
위처럼요 class 를 thread 로 선언한건데요 create가 생성되고 1버의
execute 를 처리할때 2 부분에서 컴파일될때 thread err 롤 thread handle
가 나옵니다. 어떻게 해결해야 할까요?
1  COMMENTS
  • Profile
    김수경 2003.02.25 06:24
    TThread Class의 Constructor인 Create에서
    Execute Member를 호출하는 것이 아니라
    Constructor의 Parameter인 CreateSuspended로
    Thread 실행부인 Execute()를 실행 여부를 결정해
    주도록 되어 있습니다.

    자세한 사항은 이곳(delphi.co.kr)에서 검색어
       TThread
    로 검색해 보거나

    Delphi 예제 프로그램(예제도 함께 설치했으면 Delphi 설치 Folder내 있음)인
      ...ExamplesAppsThreads
    에 있는 Thread 예제를 참조해 보시기 바랍니다.


    글구 님의 질문중에
      "2 부분에서 컴파일될때 thread err로 thread handle가 나옵니다"
    란 곳이 있는데. Thread Handle은 실행중 나오는 건데
    컴파일중 나온다고 쓰서서.... 의미를 파악할 수 없네요 ^^;

    즐푸하세요