안녕하세요 델파이 왕초보 달벌레입니다 ^^
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.