注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

Delphi XE7下面关于TThread.Synchronize和TThread.Queue  

2015-02-05 20:30:51|  分类: delphixe7 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
介绍

今天在网络上看到关于在通过ITask来进行界面的更新,同时使用到了线程,虽然有点了解,但是一知半解,所以有没有来介绍下,下面两个函数在使用方面的区别,我知道TThread.Synchronize是任务阻塞,直到完成,但是另外一个不太清楚,还有使用方面的区别,请高手来介绍下。
unit Unit6;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Threading, Vcl.StdCtrls;

type
  TForm6 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);
 var
  aTask: ITask;
begin
  aTask := TTask.Create(
  procedure
   begin
     sleep (5000);
     TThread.Queue(nil,
     procedure
     begin
       ShowMessage ('Hello1');
     end);
     //Button2Click(Self);
  end);
  aTask.Start;

end;

procedure TForm6.Button2Click(Sender: TObject);
var
  aTask: ITask;
begin
  aTask := TTask.Create(
  procedure
  begin
    sleep (5000);
    TThread.Synchronize(nil,
    procedure
    begin
      ShowMessage ('Hello2');
    end);
  end);
  aTask.Start;
end;

end.
  评论这张
 
阅读(1081)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017