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

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

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

function CreateEvent(

lpEventAttributes: PSecurityAttributes; {安全设置}

bManualReset: BOOL; {第一个布尔}

bInitialState: BOOL; {第二个布尔}

lpName: PWideChar {对象名称}

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

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

动暂停.

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

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

etEvent);

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

本例效果图:

代码文件:

unit Unit1;

interface

uses

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