Delphi多线程学习(7):事件Event
Event事件用法与Mutex差不多,但它可以使用:SetEvent(启动运行)ResetEvent(暂停运行)、PulseEvent(执行一次后立即暂停)。
先看一下创建函数:CreateEvent(
lpEventAttributes: PSecurityAttributes;
bManualReset: BOOL;
bInitialState: BOOL;
lpName: PWideChar ): THandle; stdcall;
(lpEventAttributes参数,指向TSecurityAttributes记录的指针,一般可以缺省填入nil值;
bManualReset参数,是否可手动暂停,True为可手动,False为事件对象控制一次后将立即暂停;
bInitialState参数,初始状态,True为事件对象创建后处可运行状态,False为暂停状态;
lpName参数,事件的名称;
返回值为句柄。)
例子代码:
{主窗体代码}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
btnSetEvent: TButton;
btnResetEvent: TButton;
相关文档:
如何调试DLL,在这里就不再赘述了,但是,今天就碰到了一个特别奇怪的问题,参数设置正确,就是不能调试?? 通过上网查资料,发现了问题,注意:
1, 将Project主菜单的Project Options对话框的Compiler页面Debugging选项中的 Debug informaton、Local symbols、Assertions复选框选中
2,将Tools主菜单的D ......
CTRL+SPACE 代码补全,很好用的(先改了输入法热键)
CTRL+SHIFT+C 编写申明或者补上函数
CTRL+SHIFT+↑(↓) 在过程、函数、事件内部, 可跳跃到相应的过程、函数、事件的定义(在INTERFACE和IMPLEMENTATION之间来回切换)
CTRL+SHIFT+G 插入GUID
CTRL+J (弹出DELPHI语句提示窗口,选择所需语句将自动完成一条 ......
指针用法的例子:
1 var
2 X, Y: Integer; // X and Y 整数类型
3 &n ......
TThread是一个抽象类,用于在delphi中创建线程。
创建一个TThread的子类对象即相当于创建一个线程。
当一个应用程序运行时,应用程序就被载入内存准备执行。此时,它成为包含一个或多个线程的进程。线程执行应用程序的部分内容,并由操作系统分配CPU时间。同一进程的所有线程共享同一地址空间,可以访问进程的全局变量 ......
在使用多线程的时候,如果多线程对某个特定的公共数据或资源进行访问,需要对多线程进行协调操作,叫做线程同步。
例如:三个线程分别循环地向ListBox中写入数据。没有进行同步时,写入的顺序是不确定的。
{主窗体代码}
unit Unit2;
interface
uses
Windows, Messages, SysUtils, V ......