Main 유닛은 Thread 유닛에서 사용해야되고 Thread 유닛은 Main 유닛에서 사용해야 하는데요...
Main 유닛의 Procedure를 Thread 에서 Synchronize 해서 사용하려고 합니다
Main 유닛의 Procedure를 Thread 에서 호출하는 방법 없나요?
그리고 위의 방법으로 Synchronize 해서 사용해도 별 문제는 없나요?
Main 유닛은 Thread 유닛에서 사용해야되고 Thread 유닛은 Main 유닛에서 사용해야 하는데요... Main 유닛의 Procedure를 Thread 에서 Synchronize 해서 사용하려고 합니다 Main 유닛의 Procedure를 Thread 에서 호출하는 방법 없나요? 그...
김동원
•
2008.05.04 20:57
Thread에 Event를 설정하고 그 Event를 MainForm에 연결해서 사용하면 될듯 합니다.
Thread에서 Event를 C...
Thread에서 Event를 Call할 때 Synchronize를 사용하면 되구요..
다음은 간단한 예 입니다.
TMyThread=class(TThread)
private
FEvent: TNotifyEvent;
procedure DoEvent;
protected
procedure Execute; override;
public
property Event: TNotifyEvent read FEvent write FEvent;
end;
procedure TMyThread.DoEvent;
begin
if Assigned(FEvent) then
FEvent(Self);
end;
procedure TMyThread.Execute;
begin
while(not Terminated)
begin
Synchronize(DoEvent); // --> Synchronize를 이용한 Event 실행
end;
end;
//MainForm에서 TMyThread Event연결
TMainForm=class(TForm)
private
FThread: TMyThread;
procedure ThreadEvent(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
end;
procedure TMainForm.Create(AOwner: TComponent);
begin
FThread := TMyThread.Create(true);
FThread.Event := ThreadEvent;
FThread.Resume;
end;
procedure TMainForm.ThreadEvent(Sender: TObject);
begin
// 여기서 필요한 처리를 하면됩니다.
end;
도움이 되셨길 바랍니다....
그럼 즐코하세요... ^^
--------------------------------------------------------------------------------------------------------