登陆

Delphi多线程程序示例

这个程序介绍了我们在使用线程及未使用线程二种情况下,运行该程序的反
应。当点UsedThread按钮时,则建立一个线程,这时我们可以在程序进行计算的同
时,改变窗体的尺寸及移动它。当按下NoUsedThread按钮时,不建立线程,我们会发
现在程序没有计算完之前根本不能做其它任何事情!

Delphi代码
  1. unit Unit1;   
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   
  7.   Dialogs, StdCtrls, Buttons;   
  8.   
  9. type  
  10.   TForm1 = class(TForm)   
  11.     UsedThread: TBitBtn;   
  12.     NoUsedThread: TBitBtn;   
  13.     procedure UsedThreadClick(Sender: TObject);   
  14.     procedure NoUsedThreadClick(Sender: TObject);   
  15.   private  
  16.     { Private declarations }  
  17.   public  
  18.     { Public declarations }  
  19.   end;   
  20.   
  21. var  
  22.   Form1: TForm1;   
  23.   
  24. implementation  
  25.   
  26. {$R *.dfm}  
  27.   
  28. function MyThreadFunc(P:pointer):Longint;stdcall;   
  29. var  
  30.   i:longint;   
  31.   DC:HDC;   
  32.   S:string;   
  33. begin  
  34.   DC:=GetDC(Form1.Handle);   
  35.   for i:=0 to 500000 do begin  
  36.     S:=Inttostr(i);   
  37.     Textout(DC,10,10,Pchar(S),length(S));   
  38.   end;   
  39.   ReleaseDC(Form1.Handle,DC);   
  40. end;   
  41.   
  42.   
  43. procedure TForm1.UsedThreadClick(Sender: TObject);   
  44. var  
  45.   hThread:Thandle;//定义一个句柄   
  46.   ThreadID:DWord;   
  47. begin  
  48. //创建线程,同时线程函数被调用   
  49.   hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);   
  50.   if hThread=0 then  
  51.   messagebox(Handle,'Didn’tCreateaThread',nil,MB_OK);   
  52. end;   
  53.   
  54. procedure TForm1.NoUsedThreadClick(Sender: TObject);   
  55. begin  
  56.   MyThreadfunc(nil);   
  57.   //没有创建线程时,直接调用线程函数   
  58. end;   
  59. end.   

Tags: 多线程, 示例, 程序, 线程

« 上一篇 | 下一篇 »

相关文章