본문 바로가기
Delphi/클래스

델파이 프로시저/함수를 스레드(Thread)로 실행

by MonoSoft 2024. 6. 12.
728x90
반응형

델파이 프로시저/함수를 스레드(Thread)로 실행

 

728x90

 

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

 

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

procedure TestFunc(Sender: TObject);

end;

 

//--------------------------------------------------------------------------

{ TRunThread }

TRunThread = class(TThread)

private

OnEvent: TNotifyEvent;

Sender: TObject;

public

constructor Create(event: TNotifyEvent; _sender: TObject);

procedure Execute();

override;

end;

//--------------------------------------------------------------------------

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

//--------------------------------------------------------------------------

{ TRunThread }

constructor TRunThread.Create(event: TNotifyEvent; _sender: TObject);

begin

inherited Create(false);

FreeOnTerminate := true;

OnEvent := event;

Sender := _sender;

end;

 

procedure TRunThread.Execute;

begin

OnEvent(Sender);

end;

 

//--------------------------------------------------------------------------

{ Test }

// 요건 쓰레드에 실어서 실행할 함수 입니다.

procedure TForm1.TestFunc(Sender: TObject);

var

c, k, temp: integer;

begin

// 엄청 시간이 걸리는 루틴.

for c := 0 to 1999999998 do

begin

k := c;

inc(k);

temp := k;

dec(temp);

k := temp + 1;

end;

Caption := inttostr(k);

Button1.Enabled := true;

end;

 

// 쓰레드를 생성한후 쓰레드에서 함수를 실행한후 즉시 리턴해 프로그램 실행을 계속한다.

procedure TForm1.Button1Click(Sender: TObject);

var

thread: TRunThread;

begin

//

Button1.Enabled := false;

Caption := '1';

thread := TRunThread.Create(TestFunc, Sender);

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

//

Caption := '하하하';

end;

 

end.

 

728x90
반응형

'Delphi > 클래스' 카테고리의 다른 글

시스템 정보 가져오기  (0) 2023.06.15
클래스란?  (0) 2023.06.05
쓰레드 추가설명  (0) 2022.03.23
익명함수+스레드를 활용한 간단한 스레드 사용 방법  (0) 2022.01.24
멀티스레드 GUI 동기화  (0) 2022.01.14

댓글