delphi 多執行緒

2022-08-31 11:24:11 字數 1673 閱讀 3893

看別人的部落格一萬次記憶效果也沒那麼好,還是自己動手寫寫吧!

functioncreatethread(

lpthreadattributes: pointer;          

dwstacksize: dword;                   

lpstartaddress: tfnthreadstartroutine;

lpparameter: pointer;                 

dwcreationflags: dword;               

varlpthreadid: dword                 

): thandle;stdcall;                    

//api例項

functionmyfun(p: pointer): integer;stdcall;//加stdcall(入口函式)

var

i: integer;

begin

fori := 0

to500000

do

begin

form1.canvas.lock;

form1.canvas.textout(10, 10, inttostr(i));

form1.canvas.unlock;

end;

result := 100;//入口函式返回值

end;//返回值作用:等執行緒退出後, 我們用 getexitcodethread 函式獲取的退出碼就是這個返回值!

//如果執行緒沒有退出, getexitcodethread 獲取的退出碼將是乙個常量 still_active (259); 這樣我們就可以通過退出碼來判斷執行緒是否已退出.

procedure form1.button1click();

varid:dword;//由於createthread中定義id為dword型別。

begin

控制代碼:=createthread(nil,0,@myfun,nil,0,id);

end;

//tthread例項

type

tmythread =class(tthread)

protected

procedure  exceute; override;

end;

procedure tmythread.exceute;//類有的抽象方法(execute),

begin

freeonterminate:=true;

end;

procedure form1.buttom1click;

varmythread:tmythread;

begin

mythread:tmythread.create(false);//false:立刻執行;true:resume才執行。suspend

end;

delphi 多執行緒

摘自 萬一的部落格 functionmyfun p pointer integer stdcall var i integer begin fori 0to500000do begin form1.canvas.lock form1.canvas.textout 10,10,inttostr i f...

delphi 多執行緒例項

下面筆者將介紹乙個簡單的例項,解釋和說明前面所述的內容。1 建立form,在其中建立兩個按鈕 開始採集 和 停止採集 新增乙個paintbox1。2 建立乙個新的單元,在其中輸入以下 unit collectthread inte ce uses classes,sysutils,stdctrls,...

delphi多執行緒釋放

delphi建立了多執行緒後,要想在執行完成後自動釋放所用的資源,可以在建構函式constructor裡指定 執行緒結束時的執行事件,onterminate finishedevent 這樣,當乙個執行緒執行完成後,就會自動呼叫 這個過程,當然,在建構函式裡還必須先有這兩句 inherited cr...