delphi 多线程

看别人的博客一万次记忆效果也没那么好,还是自己动手写写吧!

function CreateThread(
  lpThreadAttributes: Pointer;           {安全设置}
  dwStackSize: DWORD;                    {堆栈大小:0是系统默认的大小}
  lpStartAddress: TFNThreadStartRoutine; {入口函数}
  lpParameter: Pointer;                  {函数参数无类型指针}
  dwCreationFlags: DWORD;                {启动选项:0: 线程建立后立即执行入口函数;CREATE_SUSPENDED: 线程建立后会挂起等待}
  var lpThreadId: DWORD                  {输出线程 ID }
): THandle; stdcall;                     {返回线程句柄}

//API实例

function MyFun(p: Pointer): Integer; stdcall;//加stdcall(入口函数)
var
  i: Integer;
begin
  for i := 0 to 500000 do
  begin
    Form1.Canvas.Lock;
    Form1.Canvas.TextOut(10, 10, IntToStr(i));
    Form1.Canvas.Unlock;
  end;
  Result := 100;//入口函数返回值
end;//返回值作用:等线程退出后, 我们用 GetExitCodeThread 函数获取的退出码就是这个返回值!

//如果线程没有退出, GetExitCodeThread 获取的退出码将是一个常量 STILL_ACTIVE (259); 这样我们就可以通过退出码来判断线程是否已退出.

 

procedure Form1.Button1Click();

var

  ID:Dword;//由于CreateThread中定义ID为DWord类型。

begin

  句柄:=CreateThread(nil,0,@MyFun,nil,0,ID);

end;

 

 

//TTHread实例

Type

TMyThread =class(TThread)

protected

  procedure  Exceute; override;

end;

procedure TMyThread.Exceute;//类有的抽象方法(Execute),

begin

  FreeOnTerminate:=True;

  ...

end;

...  ...

procedure Form1.Buttom1Click;

var

  MyThread:TMyThread;

begin

  MyThread:TMyThread.Create(False);//False:立刻执行;True:Resume才执行。Suspend

end;

转载于:https://www.cnblogs.com/760044827qq/p/4156584.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值