• delphi 多线程 数据库



    // 线程类
    unit Unit2;

    interface

    uses
    Classes;

    type
    TMyThread = class(TThread)
    private
    FUserName: string;
    FPassWord: string;
    FFlag: Boolean;
    procedure GetUserName(const Value: string);
    procedure GetPassWord(const Value: string);
    { Private declarations }
    protected
    procedure Execute; override;
    public
    property UserName: string read FUserName write GetUserName;
    property PassWord: string read FPassWord write GetPassWord;
    property MyFunRetVal: Boolean read FFlag default False;
    function Myfun(FUserName, FPassWord: string): Boolean;
    constructor Create(b: Boolean = True);
    end;

    implementation

    function TMyThread.Myfun(FUserName, FPassWord: string): Boolean;
    begin
    Result := True; // 简单起见让它固定为True
    end;

    constructor TMyThread.Create(b: Boolean = True);
    begin
    inherited Create(b);
    Self.FreeOnTerminate := True;
    end;

    procedure TMyThread.Execute;
    begin
    FFlag := Myfun(FUserName, FPassWord);
    end;

    procedure TMyThread.GetPassWord(const Value: string);
    begin
    FPassWord := Value;
    end;

    procedure TMyThread.GetUserName(const Value: string);
    begin
    FUserName := Value;
    end;

    end.

    //---------------------------------------------


    // 调用单元
    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
    private
    public
    procedure MyOnTerminate(Sender: TObject);
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    uses Unit2; // 线程类定义在unit2单元

    var
    retVal: Boolean; // 线程"返回值"

    procedure TForm1.btn1Click(Sender: TObject);
    var
    myThread: TMyThread;
    begin
    myThread := TMyThread.Create; // 创建线程并挂起
    myThread.UserName := 'sololie'; // 传参
    myThread.PassWord := '撸过更健康';
    myThread.OnTerminate := MyOnTerminate; // 线程结束的回调函数
    myThread.Resume; // 开始执行线程
    end;

    procedure TForm1.MyOnTerminate(Sender: TObject);
    begin
    retVal := (Sender as TMyThread).MyFunRetVal;
    if retVal then
    ShowMessage('线程执行函数返回 True')
    else
    ShowMessage('线程执行函数返回 False');
    end;

    end.

  • 相关阅读:
    phpcurl使用
    系统常见问题
    java虚拟机CPU占用率过高排查方法
    oracle常用维护SQL
    PPT常用演示技能
    VS快捷键
    微软企业库缓存使用
    Oracle导sql的一个简便方法
    领域驱动设计
    sqluldr2
  • 原文地址:https://www.cnblogs.com/yuyang2100/p/4791794.html
Copyright © 2020-2023  润新知