delphi 多线程 数据库

摘要:
推翻布尔值;=正确;procedureTMyThread.Execute;字符串);=价值终止实现{$R*.dfm}使用sUnit2;布尔值;TObject);TObject);终止


// 线程类
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.

免责声明:文章转载自《delphi 多线程 数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring IOC 之注册解析的 BeanDefinitionMySQL基于Amoeba实现读写分离下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询

一、Geomesa - QuickStart(教程工程包) 百度网盘下载地址:geomesa-tutorials-master.7z 二、解压后,IDEA编译如下 百度网盘下载地址:IDEA2018破解版安装 三、根据日期范围查询 1 @Test 2 public void query() throwsException { 3 4...

spring data jpa 原生查询(查一个json中的某一字段)

数据库: jpa 查询 java: 1 @Component("ediHistoryDAO") 2 public interface EdiHistoryDAO extends CrudRepository<EdiHistoryDO, Integer>{ 3 4 EdiHistoryDO findById(BigInteger id);...

spring boot 中用@value给static变量赋值

需求:改写一个JedisUtils,工具类,所以最好用静态方法和变量。 @value("${redis.host}") private static String redisHost; 运行后发现注入失败。解决办法:看了网上大家的说法,有用中间变量的,有用set方法赋值的。试了一下都是可以成功赋值的, 以下引用别人的代码: 给参数注入,执行set方法(这里...

JQuery几种动画效果的方法

下面介绍了几种动画效果的方法,具体如下: 1、show()显示效果 语法:show(speed,callback)  Number/String,Function speend为动画执行时间,单位为毫秒。也可以为slow","normal","fast" callback可选,为当动画完成时执行的函数。 show(speed,[easing],callba...

MD5Helper辅助类

DES加密和解密 public classMD5Helper { ///DES加密 ///sKey public string MD5Encrypt(string pToEncrypt, stringsKey) { DESCryp...

Apache Beam实战指南 | 大数据管道(pipeline)设计及实践

Apache Beam实战指南 | 大数据管道(pipeline)设计及实践  mp.weixin.qq.com 策划 & 审校 | Natalie作者 | 张海涛编辑 | LindaAI 前线导读: 本文是 Apache Beam 实战指南系列文章第五篇内容,将对 Beam 框架中的 pipeline 管道进行剖析,并结合应用示例介绍如...