以下為例子:
unit unit1;
inte***ce
uses
windows
, messages
, sysutils
, variants
, classes
, graphics
, controls
, forms
,dialogs
, stdctrls
, extctrls
;type
tform1
=class
(tform
)button1
: tbutton
;procedure button1click
(sender
:tobject);
private
public
end;
varform1
: tform1
;implementation
uses
unit2
; procedure tform1
.button1click
(sender
:tobject);
var i
:integer;
panel
: tpanel
;begin
for i
:=0to8do
begin
panel
:= tpanel
.create
(self);
panel
.parent:=
self;
panel
.top:
= i
*20;
panel
.left
:= i
*50;
panel
.width:=
50;panel
.caption:=
inttostr
(i );
thread
.create
(panel
); end;
end;
end.
unit unit2
;inte***ce
uses
classes
, extctrls
, sysutils
;type
thread
=class
(tthread
)private
i :
integer;
fpanel
: tpanel
;protected
procedure execute
;override;
procedure update
;public
constructor create
(panel
: tpanel
); end;
implementation
procedure thread
.update;
begin
fpanel
.caption:=
inttostr
(i );
fpanel
.refresh;
end;
procedure thread
.execute;
begin
i :=0
; while
not terminated
dobegin
//如無sleep,則當執行緒超過1個的話,介面就會死鎖。
sleep(1
);//也可不用synchronize,但關閉時,要處理執行緒。
synchronize
(update
); // update;
inc(i );
end;
end;
constructor thread
.create
(panel
: tpanel
); begin
freeonterminate
:=true;
fpanel
:= panel
;inherited create
(false);
end;
end.
Delphi 多執行緒使用(1)
整理萬一部落格 執行緒學習 每個例子 均執行和使用 執行環境 我自己使用的是xe4,其他版本也可 附原始碼 什麼是執行緒 vcl執行緒的使用 tthread類 屬性freeonterminate屬性 指定當執行緒終止時是否自動刪除執行緒物件 預設 false 有的書上說是 true,建議使用時候,直...
Delphi中使用多執行緒
這些天在indy的阻塞式socket模型的強迫下,開始在delphi中使用多執行緒。總結了一些經驗,儘管非常膚淺 1 對於vcl的控制項 大部分vcl的控制項的方法和屬性是不能保證執行緒安全的。我粗淺的理解執行緒安全為如果這個函式同時被兩個執行緒呼叫時,由於內部的指令不能保證按順序 即中間插入其他執...
delphi 多執行緒
摘自 萬一的部落格 functionmyfun p pointer integer stdcall var i integer begin fori 0to500000do begin form1.canvas.lock form1.canvas.textout 10,10,inttostr i f...