delphi線程的創建、掛起、激活與終止


procedure TForm1.Button1Click(Sender: TObject);
begin
//創建線程,同時線程函數被調用
hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SuspendThread(hThread); //掛起線程
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ResumeThread(hThread); // 激活線程
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
TerminateThread(hThread,0); // 終止線程
end;

注意 當T T h r e a d的C r e a t e ( )被調用時,需要傳遞一個布爾型的參數C r e a t e S u s p e n d e d。如果把這
個參數設成F a l s e,那么當調用C r e a t e ( )后,E x c u t e ( )會被自動地調用,也就是自動地執行線程代
碼。如果該參數設為Tr u e,則需要運行T T h r e a d的R e s u m e ( )來喚醒線程。一般情況下,當你調
用C r e a t e ( )后,還會有一些其他的屬性要求設置。所以,應當把C r e a t e S u s p e n d e d參數設為Tr u e,
因為在TThread已執行的情況下設置TThread的屬性可能會引起麻煩。

 

掛起和喚醒線程
回顧本章在先前學習TThread 的構造器C r e a t e ( )時講過,當創建一個線程時,可以先使它處於掛起
狀態,在調用了R e s u m e ( )喚醒線程后再執行線程代碼。你可能已經想到,對線程可以調用 S u s p e n d ( )和
R e s u m e ( )來動態地掛起或喚醒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM