新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. 浅谈C#中ref与out的区别

    在C#这门高级语言中,你是否注意过ref与out的用法?你是否为在调用方法时需要多个返回值呢?不用急,接下来,我们去一起去研究一下这个问题... 其实呢,C#语言中,参数的传递一共有两种方法,值传递和 ...

  2. ios 代码截屏模糊问题解决办法

    我们常用的截图方法如下所示: //尺寸是按照 UIGraphicsBeginImageContext(CGSizeMake(, )); //currentView 当前的view 创建一个基于位图的图 ...

  3. SqlServer之代码块相关

    原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/sqlserver-codeblock/ 一.go语句 ...

  4. Umbraco(3) - CSS & Javascript(翻译文档)

    原文地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/umbraco3css-javascript/ CSS & Jav ...

  5. ionic Modal

    在ionic中,modal也是添加控制器写服务的~ 在modal.html页面中增加控制器:ng-controller="aboutCtrl"记住要给这个添加控制器.头部使其关闭按 ...

  6. python 3.3.2 爬虫记录

    网络上大部分关于python爬虫的介绍以及代码讲解,都用的是python2.7或以下版本,用python3.x版本的甚少. 在python3.3.2版本中,没有urllib2这个库,也没有cookie ...

  7. SQLSERVER数据库中的 时间函数

    一.sql server日期时间函数 Sql Server中的日期与时间函数 1.  当前系统日期.时间 select getdate() 2. dateadd  在向指定日期加上一段时间的基础上,返 ...

  8. 基于JQuery的渐隐渐现轮播

    <div id="ads"> <div> <!--轮播图片--> <ul> <li><a href="# ...

  9. Android-多平台分享(新浪微博)

    很多时候,我们都会用到分享,比如说逛淘宝时,看中一件衣服,想要给小伙伴看看,我会将这件宝贝分享给我的小伙伴,当然,分享的平台就有很多啦,我分享他微信.QQ.或者微博都是可以,但是本人最喜欢微信分享啦 ...

  10. fitsSystemWindow作用

    fitsSystemWindows layout属性 英文文档注释为: Boolean internal attribute to adjust view layout based on system ...