2024年4月21日发(作者:)

据说 Event(事件对象) 是多线程最原始的同步手段, 我觉得它是最灵活的一个.

Event 对象(的句柄表)中主要有两个布尔变量, 从它的建立函数中可以看得清楚:

function CreateEvent(

lpEventAttributes: PSecurityAttributes; {安全设置}

bManualReset: BOOL; {第一个布尔}

bInitialState: BOOL; {第二个布尔}

lpName: PWideChar {对象名称}

): THandle; stdcall; {返回对象句柄}

//第一个布尔为 False 时, 事件对象控制一次后将立即重置(暂停); 为 Tr

ue 时可手动暂停.

//第二个布尔为 False 时, 对象建立后控制为暂停状态; True 是可运行状

态.

和其他同类相比, 它的灵活性在于可随时 "启动运行"(SetEvent) 和 "暂停运行"(ResetE

vent);

甚至还有个 PulseEvent 函数, 能控制执行一次后立即暂停, 很是方便.

本例效果图:

代码文件:

unit Unit1;

interface

uses

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

Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);