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.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
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. |