coding, dunia it, pascal - delphi, uncategorized,

Contoh Pemrograman Multi Threading di Delphi

Hangga Aji Sayekti Hangga Aji Sayekti Follow Nov 01, 2011 · 1 min read
Contoh Pemrograman Multi Threading di Delphi
Share this

Oke teman’s para programmer, mungkin udah pernah denger tentang multi threading. ha3x..ak sendiri jg nggak bs menjelaskan secara definisi.

Oke begini saja untuk memudahkanya..

Misalkan kita membuat suatu program yg mana dalam program itu membutuhkan dua atau lebih proses yang berjalan secara terus menerus tanpa saling mengganggu, atau dengan kata lain proses-proses itu berjalan hampir bersamaan tanpa menghentikan proses lain yang sedang berjalan.

Thread sendiri terdiri dari proses-proses dimana setiap proses dapat berjalan tanpa mengganggu proses lain.

Langsung saja contohnya nih..

di dalam tMemo terdapat item yang ter insert secara terus menerus mulai dari Baris ke – 1, Baris ke – 2, ….. dst. dan ketika Message dialog muncul, proses insert baris tidak terganggu atau terhenti.

berikut ini source codenya.

<pre class="brush:delphi">unit Unit1;

interface

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

type
TMyThread = class(TThread)
private
mmo : TMemo;
lbl : TLabel;
Fenabled : Boolean;
protected
procedure Execute; override;
public
procedure Test(mm : TMemo; frm : TForm);
property Enabled : Boolean read Fenabled write Fenabled;
end;

TForm1 = class(TForm)
mmo1: TMemo;
btnPlay: TButton;
btnStop: TButton;
btn1: TButton;
procedure btnPlayClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
mt : TMyThread;

i : Integer;

implementation

{$R *.dfm}

{ MyThread }

procedure TMyThread.Execute;
begin
inherited;
FreeOnTerminate := true;
mt.Test(Form1.mmo1, Form1);
end;

procedure TMyThread.Test(mm : TMemo; frm : TForm);
begin
while Fenabled = True do
begin
i := i + 1;
mm.Lines.Add('Baris ke - '+inttostr(i));
frm.Caption := FormatDateTime('hh:mm:ss',Now);
Sleep(1000);
end;
end;

procedure TForm1.btnPlayClick(Sender: TObject);
begin
mt := TMyThread.Create(False);
mt.Enabled := True;
mt.Priority := tpIdle;
mt.Resume;
end;

procedure TForm1.btnStopClick(Sender: TObject);
begin
mt.Enabled := False;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
ShowMessage('Tuh liat, thread-nya tetap jalan kan...');
end;

end.
Hangga Aji Sayekti
Written by Hangga Aji Sayekti
A passionate Software Engineer from Indonesia with experience since 2008. Bachelor's degree in Mathematics and loves Science and Computers.