delphi 多线程 开始、暂停、继续、停止


本文整理自网络,侵删。

 
unit Unit1;

interface

uses
  uThreads, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    btnStart: TButton;
    btnSuspend: TButton;
    btnContinue: TButton;
    btnStop: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure btnStartClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnSuspendClick(Sender: TObject);
    procedure btnContinueClick(Sender: TObject);
    procedure btnStopClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

var
  WorkThread: TWork;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  //匿名线程
  //TThread.CreateAnonymousThread(Work).Start;
  TThread.CreateAnonymousThread(
    procedure
    var
      Num: Integer;
    begin
      for Num := 1 to 10000000 do begin
        Form1.Label1.Caption := Num.ToString;
        //线程休眠100毫秒
        TThread.Sleep(100);
      end;
    end).Start;
end;


procedure Work();
var
  Num: Integer;
begin
  for Num := 1 to 10000000 do begin
    Form1.Label1.Caption := Num.ToString;
    //线程休眠100毫秒
    TThread.Sleep(100);
  end;
end;

procedure TForm1.btnContinueClick(Sender: TObject);
begin
  WorkThread.Suspended := False;
end;

procedure TForm1.btnStartClick(Sender: TObject);
begin
  //True:表示线程创建完对象后是立即执行还是先挂起
  try
    WorkThread.Start;
  except
    on E: Exception do
      ShowMessage('启动失败');
  end;

end;

procedure TForm1.btnStopClick(Sender: TObject);
begin
   WorkThread.FreeOnTerminate  := True;

//  try
//    TerminateThread(WorkThread.Handle, 0);
//  except
//    on E: Exception do
//      ShowMessage('终止失败');
//  end;

end;

procedure TForm1.btnSuspendClick(Sender: TObject);
begin
  WorkThread.Suspended := True;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
  label1.Caption := '0';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WorkThread := TWork.Create(True);

end;

end.

相关阅读 >>

Delphi连接mysql出现乱码

Delphi 注册表管理

Delphi 一个拼图工具的制作思路

Delphi tzipfile 用法

Delphi获取图片的真实类型

Delphi 在 api 函数中使用 pchar 参数的几种方法

Delphi 获取某个页面所有的链接

Delphi blockread和blockwrite读写文件

Delphi 随机程序名

Delphi 写的经常用到的加解密函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...