程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 多線程編程(1)-先入門再說(2)

多線程編程(1)-先入門再說(2)

編輯:Delphi

細數上面程序的變化:

1、首先這還不是多線程的, 也會讓窗體假 "死" 一會;

2、把執行代碼寫在了一個函數裡, 但這個函數不屬於 TForm1 的方法, 所以使用 Canvas 是必須冠以名稱(Form1);

3、既然是個函數, (不管是否必要)都應該有返回值;

4、使用了 500001 次 Lock 和 Unlock.

Canvas.Lock 好比在說: Canvas(繪圖表面)正忙著呢, 其他想用 Canvas 的等會;

Canvas.Unlock : 用完了, 解鎖!

在 Canvas 中使用 Lock 和 Unlock 是個好習慣, 在不使用多線程的情況下這無所謂, 但保不准哪天程序會擴展為多線程的; 我們現在學習多線程, 當然應該用.

在 Delphi 中使用多線程有兩種方法: 調用 API、使用 TThread 類; 使用 API 的代碼更簡單.

function MyFun(p: Pointer): Integer; stdcall;
var
 i: Integer;
begin
 for i := 0 to 500000 do
 begin
  Form1.Canvas.Lock;
  Form1.Canvas.TextOut(10, 10, IntToStr(i));
  Form1.Canvas.Unlock;
 end;
 Result := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 ID: THandle;
begin
 CreateThread(nil, 0, @MyFun, nil, 0, ID);
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved