先看乙個非多執行緒的例子, **執行時不能進行其它操作(譬如拖動窗體):
procedure
mymethod;
var i: integer;
begin
fori := 0
to 500000 do
begin
form1.canvas.lock;
form1.canvas.textout(
10,
10, inttostr(i));
form1.canvas.unlock;
end;end
;procedure
tform1.button1click(sender: tobject);
begin
mymethod;
end;
修改為多執行緒(只修改一行**):
procedure
mymethod;
var i: integer;
begin
fori := 0
to 500000 do
begin
form1.canvas.lock;
form1.canvas.textout(
10,
10, inttostr(i));
form1.canvas.unlock;
end;end
;procedure
tform1.button1click(sender: tobject);
begin
tthread.createanonymousthread(mymethod).start; //!!!
end;
**分析:
1、tthread 現在增加了許多 class 方法(直接通過類名呼叫的方法), tthread.createanonymousthread() 就是比較有用的乙個.
3、但 createanonymousthread 建立執行緒後是掛起的, 需要手動執行它; 後面的 start 方法就是用來喚醒執行緒的.
4、(以前)喚醒執行緒還可以使用 resume 方法或 suspended 屬性(suspended := false;); 但它們即將被廢棄了, 現在應使用 start 來啟動執行緒.
createanonymousthread 的引數型別 tproc 是匿名方法(reference), 所以**可以簡寫為:
procedure
tform1.button1click(sender: tobject);
begin
tthread.createanonymousthread( //直接寫入方法體
procedure
var i: integer;
begin
for i := 0
to 500000 do
begin
canvas.lock;
canvas.textout(
10,
10, inttostr(i));
canvas.unlock;
end;
end //此處無分號
).start;
end;
延時執行:
var mythread: tthread;
procedure
tform1.formcreate(sender: tobject);
begin
mythread := tthread.createanonymousthread(
procedure
var i: integer;
begin
for i := 0
to 500000 do
begin
canvas.lock;
canvas.textout(
10,
10, inttostr(i));
canvas.unlock;
end;
end );
end;
procedure
tform1.button1click(sender: tobject);
begin
mythread.start;
end;
易用性測試
易用性 useability 是互動的適應性 功能性和有效性的集中體現。人體工程學 ergonomics 是一門將日常使用的東西設計為易於使用和實用性強的學科。在 2003 年頒布的 gb t16260 2003 iso 9126 2001 軟體工程 產品質量 質量模型中,提出易用性包含易理解性 易...
生活中軟體易用性的例子 軟體易用性
在 gb t 29836 2013 系統與軟體易用性 中,將軟體易用性又細分為易理解性 易學性 易操作性以及吸引性四個子特性,並且為每個子特性都定義了若干個評估指標和評估方法。國標中的文字較為晦澀,不容易理解。另外國標中是以易用性的評估和度量為主要目的,而我認為首先學會如何分析和設計應該更重要一些。...
章11 易用性測試
章11 易用性測試 易用性 useability 是互動的適應性 功能性和有效性的集中體現。人體工程學 ergonomics 是一門將日常使用的東西設計為易於使用和實用性強的學科。人體工程學的主要目標是達到易用性。1 使用者介面測試 用於與軟體互動的方式稱為使用者介面或ui。2 優秀ui的構成 軟體...