zoukankan      html  css  js  c++  java
  • TThread类初探

    TThread类   Thread类是Delphi语言提供的线程类,该线程类可以完成大多数的线程操作

    TThread类的属性   

     1.(1)FreeOnTerminate属性      

     当线程终止时是否自动删除线程对象.默认值为True;  语法:property FreeOnTerminate: Boolean;   

    2 Priority属性      指定线程的优先级.   property Priority: TTreadPriority;      

    3 ReturnValue属性       线程终止时,用该属性为其他线程传递一个返回值.   

     4 Suspended属性      指定线程是否处于挂起状态   

     5 Terminated       线程运行晨,如果将属性为True时,线程终止  

     6 ThreadID属性      线程的惟一标识   

    7 Handle属性      线程句柄    

    TThread类方法    

     DoTerminate: 调用线程对象DoTerminate方法可以触发线程的OnTerminate事件    

     Execute:线程的执行部分都写在该有方法中.必须实现的    

     Resume:当线程对象处于暂停状态时,调用此方法可以恢复线程运行   

      Suspend:暂停线程    

     Synchronize:线程同步    

     Terminate:终止线程    

     WaitFor:等待线程对象的终止,并返回线程对象的ReturnValue属性值   

    unit Unit2;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComCtrls;

    type

    TMyThread = class(TThread)
    protected
    procedure Run();
    procedure Execute;override;
    end;



    TfrmDemo = class(TForm)
    ProgressBar1: TProgressBar;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    frmDemo: TfrmDemo;

    implementation

    {$R *.dfm}

    { TMyThread }

    procedure TMyThread.Execute;
    begin
    inherited;
    //线程同步
    Synchronize(Run);
    end;

    procedure TMyThread.Run;
    var
    I: Integer;
    begin
    with frmDemo do
    begin
    for I := 0 to ProgressBar1.Max do
    begin
    Label1.Caption := '工作线程运行中';
    ProgressBar1.Position := i;
    Application.ProcessMessages;
    end;
    end;
    end;

    procedure TfrmDemo.Button1Click(Sender: TObject);
    var
    I: Integer;
    begin
    for I := 0 to ProgressBar1.Max do
    begin
    Label1.Caption := '主线程运行中';
    ProgressBar1.Position := i;
    Application.ProcessMessages;
    end;
    end;

    procedure TfrmDemo.Button2Click(Sender: TObject);
    var
    MyThread: TMyThread;
    begin
    MyThread := TMyThread.Create(false);
    end;

    procedure TfrmDemo.FormCreate(Sender: TObject);
    begin
    progressbar1.Max := 1000000;
    end;

    end.
  • 相关阅读:
    根据IP地址查找MAC地址
    MongoDB导入导出以及数据库备份
    本地mongodb数据库导出到远程数据库中
    datatable自动增加序号
    IDEA出现无法加载主类
    远程连接本地mongodb 数据库
    js将后台传入得时间格式化
    Java蓝桥杯--基础练习 (6)回文数
    Java蓝桥杯--基础练习(5)杨辉三角形
    Java蓝桥杯--基础练习(4)查找整数
  • 原文地址:https://www.cnblogs.com/pengshaomin/p/2339329.html
Copyright © 2011-2022 走看看