主页 > 编程资料 > Delphi >
发布时间:2015-09-22 作者:网络 阅读:147次

使用线程时有两个主要任务:第一,创建线程,第二,创建线程入口函数。Windows API调用CreateThread函数来创建一个线程。
hthread := CreateThread(nil, //是安全属性,如果此参数设为Nil,使用的是缺省安全属性,在Windows95/98下,标准的就设为Nil,只有想此线程有子线程时才可能脱离这种模式。
0, //如果这个参数为0,就是线程的堆栈长度和此应用程序的的堆栈长度相同,可以总把此参数设置为0
@ThreadFunc, //线程开始初的线程名称,
nil, // argument of thread
0, // Create flags
ThreadID); // thread ID


function ThreadFunc(P: Pointer): LongInt; stdcall;
var
i: Integer;
DC: HDC;
S: string;
begin
DC := GetDC(Form1.Handle);
SetBkColor(DC, GetSysColor(color_btnface));
for i := 0 to 100000 do
begin
S := IntToStr(i);
TextOut(DC, 10, 10, PChar(S), Length(S));
end;
ReleaseDC(Form1.Handle, DC);
end;

//采用一个多线程
procedure TForm1.Button4Click(Sender: TObject);
var
hThread: THandle;
ThreadID: DWord;
begin
hthread := CreateThread(nil, //Security attribute
0, //Initial Stack
@ThreadFunc, //Starting address of thread
nil, // argument of thread
0, // Create flags
ThreadID); // thread ID

if hthread = 0 then MessageBox(Handle, 'No Thread', nil, MB_OK);
end;

//采用单线程
procedure TForm1.Button5Click(Sender: TObject);
begin
ThreadFunc(nil);
end;
关键字词: