delphi Parallel 之 TTask 初试
unit Unit1; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
System.Generics.Collections; type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
procedure TaskProc(Sender: TObject);
function FutureEvent(Sender: TObject): string;
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} uses
System.Threading, System.SyncObjs, System.Diagnostics; procedure TForm1.Button1Click(Sender: TObject);
var
ATask: ITask;
begin
ATask := TTask.Run(Self, Form1.TaskProc);
ATask.Start;
//阻塞至线程结束
ATask.Wait;
end; procedure TForm1.Button2Click(Sender: TObject);
var
ATask: IFuture<string>;
begin
ATask := TTask.Future<string>(function: string
begin
TThread.Sleep();
Result := DateTimeToStr(Now);
end);
//阻塞至线程结束
Caption := ATask.Value;
end; procedure TForm1.Button3Click(Sender: TObject);
var
ATask: IFuture<string>;
begin
ATask := TTask.Future<string>(Self, FutureEvent);
//阻塞至线程结束
Caption := ATask.Value;
end; procedure TForm1.Button4Click(Sender: TObject);
var
TaskArray: TArray<ITask>;
I: Integer;
begin
SetLength(TaskArray, );
for I := Low(TaskArray) to High(TaskArray) do
TaskArray[I] := TTask.Run(procedure
begin
TThread.Sleep();
end);
//阻塞至线程结束
TTask.WaitForAll(TaskArray);
ShowMessage('ok');
end; procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := True;
end; function TForm1.FutureEvent(Sender: TObject): string;
begin
Result := DateTimeToStr(Now);
end; procedure TForm1.TaskProc(Sender: TObject);
var
I: Integer;
begin
TThread.Sleep();
for I := to do
TThread.Queue(nil, procedure
begin
Memo1.Lines.Add(Sender.ClassName);
end);
end; end.
delphi Parallel 之 TTask 初试的更多相关文章
- delphi 线程 TTask
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Threading.TTask http://docwiki.embarcader ...
- [转载]:Delphi xe7并行编程快速入门
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- 关于delphi XE7中的动态数组和并行编程(第一部分)
本文引自:http://www.danieleteti.it/category/embarcadero/delphi-xe7-embarcadero/ 并行编程库是delphi XE7中引进的最受期待 ...
- TAxThread - Inter thread message based communication - Delphi
http://www.cybletter.com/index.php?id=3 http://www.cybletter.com/index.php?id=30 Source Code http:// ...
- Delphi 和 C++Builder 2014年及以后技术路线图
RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...
- DELPHI XE7 新的并行库
DELPHI XE7 的新功能列表里面增加了并行库System.Threading, System.SyncObjs. 为什么要增加新的并行库? 还是为了跨平台.以前要并行编程只能从TThread类继 ...
- Delphi xe7并行编程快速入门(三篇)
现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...
- Delphi xe7并行编程快速入门(转)
源:http://blog.csdn.net/henreash/article/details/41315183 现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优 ...
- Delphi+GDI
源:Delphi 初试GDI+学习笔记 Delphi 深入GDI+学习笔记
随机推荐
- 小程序 onReachBottom 事件快速滑动时不触发的bug
一般在列表页面 会先加载一定数量的数据 触发上拉加载这个动作的时候再陆续加载数据 假如上拉一次加载10条数据 在小程序中 你快速滑动页面触发加载这个事件的话 你会发现小程序卡着不动了 刚开始以为数据加 ...
- js设置按钮的灰色不可点击
document.getElementById("btnSave").setAttribute("disabled", true);//设置不可点击 docum ...
- Testner测试圈关于页面响应时间的测试行业标准
Testner测试圈针对小程序页面的响应时间标准建议如下:0-2秒 用户体验好,可以选择性改善,如首屏体验做到秒开等2-4秒 用户体验一般,有改善空间4-6秒 用户体验较差,有较大改善空间6秒以上 用 ...
- web传输过程中的gzip压缩
最近在做项目的时候用到了gzip,发现它的压缩能力还是很强大的,基本能够压缩50%的文本文件大小.以前有所了解,但不够深入,现在详细了解下. 什么是gzip 在哪里使用gzip gzip对于不同类型文 ...
- 第二次scrum冲刺
一.第二次冲刺任务 Scrum是在已有的基础上实现读者查询书籍的功能. 二.用户故事 用户输入账号.密码 用户输入需要查询的书籍 系统显示用户输入的信息的详细信 ...
- 使用TkbmMWThreadList实现线程安全列表
2008年的2.90.00版本,作者实现了TkbmMWThreadList,之后在kbmMW 4.40.00版本,作者将TkbmMWThreadList改成了泛型版本,用以实现线程安全的列表.要使用T ...
- holer实现外网访问本地网站
外网访问本地网站 本地搭建了网站,只能在局域网内访问,怎样从公网也能访问内网网站? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动网站服务端 默认搭建的网站服务端端口是8 ...
- 安装mysql5.5遇到的狗屁问题,最后还是细心一下就好
首先巩固下自己已经遗忘了一年的Mysql数据库和navicat可视化数据库,安装数据库没有具体要求直接点下一步就好,我第一次安装提示服务器名无效,后来发现了原因,mysql服务压根没有启动,也就是更直 ...
- [转载] Fiddler为所欲为第三篇 封包逆向必备知识[三]
导语: 小A同学:会抓包有什么好学习的,不就用一个工具设置个wifi代{过}{滤}理就OK了嘛,还不是很多做不了.不如学习安卓逆向.didi科学家:不好意思,抓包可以为所欲为. 其实学习抓包,完完全全 ...
- 在java中浅谈Math类中的常用方法
通过最近的学习,学到了一些的Math类中的常见方法 package org.stm.demo; public class Test { public static void main(String[] ...