首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

多线程怎么得到返回值

2012-04-20 
多线程如何得到返回值Delphi(Pascal) codetypedd class(TThread)private{ Private declarations }protec

多线程如何得到返回值

Delphi(Pascal) code
type  dd = class(TThread)  private    { Private declarations }  protected    procedure Execute; override;  end;implementationprocedure dd.Execute;var  s:string;  i:Integer;begin  for I:=0 to 40000 do  begin   s:=s+'ss';  end;end;end.


现在如何在主线程中得到s的值?


[解决办法]
输出到VCL组件里的话.使用synchronize进行同步
[解决办法]
LZ可能对线程的理解有问题
线程就是用来处理并发的事情的,而你所说的线程的返回值,实际上,你的思想仍然停留在函数调用的模式上(把线程看成了函数)
线程的返回值问题,最理想的办法就是线程来通知调度线程,这个调度线程可以是主线程,也可以是一个专门的调度线程,每当任务线程完成了自己的工作,就通知调度线程来取结果,这样才能够发挥出多线程的优势,而不是在那里傻等。

如果你把主线程当做调度线程,而你的主线程存在消息循环,那么,利用消息就是一个不错的通知方式。
任务线程完成了工作之后,向主线程发消息,消息中可以把任务线程本身(线程类)发给主线程,然后在主线程中取出这个线程类,然后得到任务线程的处理结果。

而最为主线程,只需要添加一个消息响应函数就可以了。

热点排行