新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下:

  TAnonymousThreadX<T> = class(TThread)
private
FProc: TProc<T>;
AValue:T;
protected
procedure Execute; override;
public
constructor Create(const AProc: TProc<T>;ProcPar:T);
end;
TThreadHelper= class helper for TThread
public
class function CreateAnonymousThreadX<T>(const ThreadProc: TProc<T>;proPar:T): TThread; static;
end; implementation { TAnonymousThreadX } constructor TAnonymousThreadX<T>.Create(const AProc: TProc<T>;ProcPar:T);
begin
inherited Create(True);
FreeOnTerminate := True;
FProc := AProc;
Avalue:=ProcPar;
end; procedure TAnonymousThreadX<T>.Execute;
begin
inherited;
FProc(Avalue);
end; { TThreadHelper } class function TThreadHelper.CreateAnonymousThreadX<T>(const ThreadProc: TProc<T>; proPar: T): TThread;
begin
Result := TAnonymousThreadX<T>.Create(ThreadProc,proPar);
end;

代码挺简单的,就是传递了一个方法及参数. 在线程里调用就是了.

将以上代码保存在一个单元中,引用了之后,就可以这样用了:

//这样使用
TThread.CreateAnonymousThreadX<Integer>(TestX,).Start; //这是TestX方法体
procedure T***.TestX(Avalue: Integer);
begin
btnContinue.Caption:=IntToStr(Avalue);
end; //如果不想定义TestX方法,也可以如下方法直接调用
TThread.CreateAnonymousThreadX<Integer>(
procedure(Avalue:Integer)
begin
btnContinue.Caption:=IntToStr(Avalue);
end
,).Start;

如果执行线程的方法有两个,三个参数,对照着改就是了.

这样用线程是不是更简单一些了呢.

扩展 delphi 线程 使之传递参数.的更多相关文章

  1. 扩展 delphi 线程 使之传递参数.(给匿名线程增加参数)

    新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...

  2. Jmeter线程组间传递参数

    现在做测试和以前不太一样了,以前只要站在一个用户的角度做端到端的UI测试就可以了,现在不会做接口测试,出去都不好意思和别人打招呼.那提到接口测试,就不得不提一下接口测试利器Jmeter,大家也都知道, ...

  3. 【delphi】Delphi过程、函数传递参数的八种方式

    Delphi过程函数传递参数的八种方式

  4. jmeter线程组之间传递参数

    JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...

  5. Delphi线程简介---Create及其参数、Resume、Suspend

    TThread在Classes单元里的声明如下 type TThread = class private FHandle: THandle; FThreadID: THandle; FTerminat ...

  6. jmeter 发送加密请求 beanshell断言 线程组间传递参数

    原文地址https://www.cnblogs.com/wnfindbug/p/5817038.html 最近在做http加密接口,请求头的uid参数及body的请求json参数都经过加密再发送请求, ...

  7. jmeter解决不同线程组之间传递参数问题

    首先在第一个线程组里讲你需要保存的值放入到jmeter的某个属性中,属性名名字自己定义,如上图的token , props.put("token", token),第二个参数必须是 ...

  8. Net线程足迹 传递参数至线程

    方法一:应用ParameterizedThreadStart这个委托来传递输入参数,这种方法适用于传递单个参数的情况. using System; using System.Collections.G ...

  9. Jmeter 跨线程组传递参数 之两种方法

    终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直 ...

随机推荐

  1. oracle 11g ora-01843 无效月份

    PS:进入注册表--regedit--HKEY_LOCAL_MACHINE--SOFTWARE--ORACLE-KEY_OraDb11g_home1---NLS_LANG(双击此项设置的键值为AMER ...

  2. Android使用MVP时应该注意的问题

    生命周期:因为Presenter是View创建的,我们需要确保完全地理解View的生命周期,特别是因为它将最有可能去处理状态更新和异步数据.举个例子,每一个Presenter应该在View destr ...

  3. Shuffle an Array

    class Solution { private: vector<int> arr, idx; public: Solution(vector<int> nums) { sra ...

  4. poj 3378 二维树状数组

    思路:直接用long long 保存会WA.用下高精度加法就行了. #include<map> #include<set> #include<cmath> #inc ...

  5. 获取IOS bundle中的文件

    在xcode中选择bundle中的文件,右键Show in Finder即可拷贝或删除文件.

  6. 各类.NET学习视频推荐

    想提高个人的技术水平一般来说都是看书.看博客.看官方实例.看视频等等,最近我也总算是稍微空了一点了,所以想找点学习资源看下,相对的我比较倾向于看 视频,因为看视频一般都有讲师讲解,而且许多视频都讲的不 ...

  7. CSV文件导入到SQL Server表中

    USE 数据库名BULK Insert dbo.表名From 'c:\CSV文件名.csv'  WITH (   FIELDTERMINATOR = ',',   ROWTERMINATOR = '\ ...

  8. centos7没有安装ifconfig命令的解决方法

    ifconfig命令是设置或显示网络接口的程序,可以显示出我们机器的网卡信息,可是有些时候最小化安装CentOS等Linux发行版的时候会默认不安装ifconfig等命令,这时候你进入终端,运行ifc ...

  9. HTML+CSS学习笔记 (11) - CSS盒模型

    元素分类 在讲解CSS布局之前,我们需要提前知道一些知识,在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <di ...

  10. 理解C#系列 / 核心C# / 名称空间

    名称空间namespace 名称空间 名称空间用来逻辑分类,而不是物理上的,名称空间与程序集无关[程序集:经由编译器编译得到的文件],同一个程序集中可以有2不同的名称空间,也可以在不同的程序集中定义同 ...