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
가 나옵니다. 어떻게 해결해야 할까요?
Execute Member를 호출하는 것이 아니라
Constructor의 Parameter인 CreateSuspended로
Thread 실행부인 Execute()를 실행 여부를 결정해
주도록 되어 있습니다.
자세한 사항은 이곳(delphi.co.kr)에서 검색어
TThread
로 검색해 보거나
Delphi 예제 프로그램(예제도 함께 설치했으면 Delphi 설치 Folder내 있음)인
...ExamplesAppsThreads
에 있는 Thread 예제를 참조해 보시기 바랍니다.
글구 님의 질문중에
"2 부분에서 컴파일될때 thread err로 thread handle가 나옵니다"
란 곳이 있는데. Thread Handle은 실행중 나오는 건데
컴파일중 나온다고 쓰서서.... 의미를 파악할 수 없네요 ^^;
즐푸하세요