2024年5月11日发(作者:)

delphi多线程编程3

窗体文件:object Form1: TForm1

Left = 0

Top = 0

Caption = 'Form1'

ClientHeight = 140

ClientWidth = 192

Color = clBtnFace

t = DEFAULT_CHARSET

= clWindowText

= -11

= 'Tahoma'

= []

OldCreateOrder = False

OnCreate = FormCreate

PixelsPerInch = 96

TextHeight = 13

object Button1: TButton

Left = 109

Top = 107

Width = 75

Height = 25

Caption = 'Button1'

TabOrder = 0

OnClick = Button1Click

end

object Edit1: TEdit

Left = 109

Top = 80

Width = 75

Height = 21

TabOrder = 1

Text = 'Edit1'

OnKeyPress = Edit1KeyPress

end

end

再用 SyncObjs 单元下的 TSemaphore 类实现一次,

行效果也一样:unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

使用方法差不多, 运

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Edit1: TEdit;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

uses SyncObjs;

var

f: Integer;

MySemaphore: TSemaphore;

function MyThreadFun(p: Pointer): DWORD; stdcall;

var

i,y: Integer;

begin

Inc(f);

y := 20 * f;

if r(INFINITE) = wrSignaled then

begin

for i := 0 to 1000 do

begin

;

t(20, y, IntToStr(i));

;

Sleep(1);

end;

end;

e;

Result := 0;

end;

procedure 1Click(Sender: TObject);

var

ThreadID: DWORD;

begin

if Assigned(MySemaphore) then ;

MySemaphore := (nil, StrToInt(), 5, '');

t;