80
最 新 评 论
80
专 题 分 类
80
最 新 日 志
80
最 新 留 言
80
搜 索
用 户 登 录
友 情 连 接
我 的 好 友
80
博 客 信 息
80


Delphi 2005 关于线程的使用 | 2009/11/17 22:01:00
使用线程时有两个主要任务:
第一,创建线程,
第二,创建线程入口函数。
Windows API调用CreateThread函数来创建一个线程。
hthread := CreateThread(参数1,参数2,参数3,参数4,参数5,参数6);
参数1 = nil,                          //是安全属性,如果此参数设为Nil,使用的是缺省安全属性,在Windows95/98下,标准的就设为Nil,只有想此线程有子线程时才可能脱离这种模式。
参数2 = 0,                            //如果这个参数为0,就是线程的堆栈长度和此应用程序的的堆栈长度相同,可以总把此参数设置为0 。
参数3 = @ThreadFunc,     //线程开始初的线程名称,
参数4 = nil,                           // argument of thread
参数5 = 0,                             // Create flags - CREATE_SUSPENDED
参数6 =ThreadID                //返回一个线程的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.Button1Click(Sender: TObject);
var
    hThread: THandle;
    ThreadID: DWord;
begin
    hthread := CreateThread(nil, 0,@ThreadFunc, nil, 0,ThreadID);
    if hthread = 0 then  MessageBox(Handle, 'No Thread', nil, MB_OK);
end;

//采用单线程
procedure TForm1.Button2Click(Sender: TObject);
begin
    ThreadFunc(nil);
end; 

阅读全文 | 回复(0) | 引用通告 | 编辑 | By: 皮皮爸爸
  • 标签:Delphi 
  • 发表评论:

      大名:
      密码: (游客无须输入密码)
      主页:
      标题:
      80
    Powered by Oblog.