Q&A

  • Thread 를 만들어 보았는데...
안녕하세요 델파이 왕초보 달벌레입니다 ^^



Thread가 먼지 도통 감을 못잡아서리 여기저기 찾아봐도

시원한 해답은 구하기가 힘들군여.

간단한 예제라도 있음 궁리해보겠는데

델파이에 포함된 예제는 너무 어렵군여 ㅜ.ㅜ



라벨 1 과 2 에서 1 부터 10000까지 찍는 소스를 나름대로

구현해보았습니다. 일단 문제없이 돌아가기는 하는데

먼가 엉성한거 같에서 불안합니다 ㅡ.ㅡ;;;



아래 소스를 보시고 틀린부분이나 보충할 점을 찝어주셨음

감사하겠습니다 ^^



참고로 어거지로 끼어맞춘거라 이해를 하고 짠것이 아닙니다 ㅡㅡ;;



========================

소스입니다

========================

unit UtMain;



interface



uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;



type

TFmMain = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



type

TMyThread = class(TThread)

protected

procedure Execute; override;

end;



var

FmMain: TFmMain;

IsExit: Boolean; // 스레드 종료 여부

MyThread: TMyThread;



implementation



{$R *.dfm}



procedure TMyThread.Execute;

var

i: Integer;

begin

for i := 1 to 10000 do

begin

FmMain.Label1.Caption:=IntToStr(i);

FmMain.Label2.Caption:=IntToStr(i);



if IsExit then break; // 스레드 종료

end;

end;



procedure TFmMain.Button1Click(Sender: TObject);

begin

IsExit := False; // 시작할때마다 거짓으로 초기화

MyThread:=TMyThread.Create(True);

MyThread.FreeOnTerminate:=True;

MyThread.Resume;

end;



procedure TFmMain.Button2Click(Sender: TObject);

begin

IsExit := True;

end;



end.

0  COMMENTS