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

delphi多線程程序示例

編輯:Delphi

(*----下面這個程序介紹了我們在使用線程及未使用線程二種情況下,運行該程序的反

應。當點UsedThread按鈕時,則建立一個線程,這時我們可以在程序進行計算的同

時,改變窗體的尺寸及移動它。當按下NoUsedThread按鈕時,不建立線程,我們會發

現在程序沒有計算完之前根本不能做其它任何事情!

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;

type
 TForm1 = class(TForm)
  UsedThread: TBitBtn;
  NoUsedThread: TBitBtn;
  procedure UsedThreadClick(Sender: TObject);
  procedure NoUsedThreadClick(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function MyThreadFunc(P:pointer):Longint;stdcall;
var
 i:longint;
 DC:HDC;
 S:string;
begin
 DC:=GetDC(Form1.Handle);
 for i:=0 to 500000 do begin
  S:=Inttostr(i);
  Textout(DC,10,10,Pchar(S),length(S));
 end;
 ReleaseDC(Form1.Handle,DC);
end;

procedure TForm1.UsedThreadClick(Sender: TObject);
var
 hThread:Thandle;//定義一個句柄
 ThreadID:DWord;
begin
//創建線程,同時線程函數被調用
 hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
 if hThread=0 then
 messagebox(Handle,'Didn’tCreateaThread',nil,MB_OK);
end;

procedure TForm1.NoUsedThreadClick(Sender: TObject);
begin
 MyThreadfunc(nil);
 //沒有創建線程時,直接調用線程函數
end;
end.

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