Omnithreadlibary学习(3)-IOmniTask异步执行SendMessage
在任务中发送消息, 可以是函数或者对象方法
TOmniTaskMessageEvent = procedure(const task: IOmniTaskControl; const msg: TOmniMessage) of object;
TOmniOnTerminatedFunction = reference to procedure(const task: IOmniTaskControl);
program main;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Classes,
OtlParallel,
OtlTask,
OtlTaskControl,
OtlComm, OtlCommon,
IdHttp,
Web.HTTPApp,
WinApi.Windows,
WinApi.Messages;
const
WM_RESULT = WM_USER;
procedure HttpGet(Host, URL: String);
var
http: TIdHttp;
begin
http := TIdHttp.Create;
// http.Request.Host := Host;
http.Request.Method := 'GET';
http.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36';
http.Request.AcceptLanguage :='zh-CN,zh;q=0.8';
http.Get(Host + URL);
Writeln('===================Response Header==========================');
Writeln('Server: ' + http.Response.Server);
Writeln('Status Code :' + http.Response.ResponseCode.ToString);
Writeln('CharSet:' + http.Response.CharSet);
Writeln('ContentLength:' + http.Response.ContentLength.ToString());
Writeln('ContentType:' + http.Response.ContentType);
http.Free;
end;
procedure LogResult(const task: IOmniTaskControl; const msg: TOmniMessage);
begin
WriteLn(Format('异步GET: %s',
[msg.MsgData.CastToStringDef('')]));
end;
begin
{异步执行发送消息}
Parallel.Async(
procedure(const task: IOmniTask)
var
Msg: String;
begin
Writeln('Thread ID ' + GetCurrentThreadID.ToString());
Msg := 'task1 Start';
task.Comm.Send(WM_RESULT, Msg);
HttpGet('http://zh.wikipedia.org/', String(HttpEncode('wiki/文档')));
task.Comm.Send(WM_RESULT, 'task1 completed');
end, Parallel.TaskConfig.Onmessage(WM_RESULT, LogResult));
Readln;
end.
1.消息没有接收到..奇怪了

Omnithreadlibary学习(3)-IOmniTask异步执行SendMessage的更多相关文章
- Omnithreadlibary学习(2)-IOmniTask异步执行
1.使用 procedure Parallel.Async(task: TProc; taskConfig: IOmniTaskConfig); 匿名委托访问网站 program main; {$AP ...
- Python学习---Python的异步IO[all]
1.1.1. 前期环境准备和基础知识 安装: pip3 install aiohttp pip3 install grequests pip3 install wheel pip3 install s ...
- How to make asynchronous HTTP requests in PHP 4种PHP异步执行的常用方式
[是否等待返回就执行下一步] How to make asynchronous HTTP requests in PHP - Stack Overflow https://stackoverflow. ...
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...
- Netty推荐addListener回调异步执行
说明 Netty推荐使用addListener的方式来回调异步执行的结果,这种方式优于Future.get,能够更精确地把握异步执行结束的时间. 错误理解使用addListener的方式 代码如下: ...
- Promise then中回调为什么是异步执行?Promise执行机制问题
今天发现一个问题,看下方代码 let p = new Promise(function(resolve, reject) { resolve() console.log('); }); p.then( ...
- Linux下搭建实现HttpRunnerManager的异步执行、定时任务及任务监控
前言 在之前搭建的HttpRunnerManager接口测试平台,我们还有一些功能没有实现,比如异步执行.定时任务.任务监控等,要完成异步执行,需要搭建 RabbitMQ 等环境,今天我们就来实现这些 ...
- [源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC
[源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC 目录 [源码解析] PyTorch 分布式(16) --- 使用异步执行实现批处理 RPC 0x00 摘要 0x0 ...
- Python开发程序:RPC异步执行命令(RabbitMQ双向通信)
RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步h ...
随机推荐
- 【转】ST05
一. SQL Trace 通过SQL跟踪,可以具体查询数据来源于哪些数据库表, 例如:可以查询某个交易(或几个交易)所涉及的数据库表. 为了减少在最终查询结果的工作量,要在屏幕显示你所要显示的数据的前 ...
- 动态获取jar文件的路径
下面专门封装了一个类来处理: import java.io.File; /** * 获取打包后jar的路径信息 * @author Administrator * 2011-01-16 13:53 ...
- 在Java中如何用String类中的indexof方法得到一个词的出现频率
public class Test{ public static void main(String[] args) { String s="hello jack hello look me ...
- Android SimpleAdapter源码详解
一直没认真看过android的源码,也不太敢看,稀里糊涂也敲了一年的代码,现在想好好学习了,就把常用的源码都看了一下,小伙伴们来涨姿势吧,有错误的地方,直接指出,我脸厚不怕丢人.来吧. 刚开始学and ...
- apache+php配置中遇到的问题
在安装apache+php配置中遇到的问题: LoadModule php5_module "D:/PHP/php5apache2_4.dll"PHPIniDir "D: ...
- Override ListView getAdapter造成的后果
近期工作中,发现了一个bug,是和ListView Adapter有关的.产生了FC,描写叙述信息大约是 "The content of the adapter has changed bu ...
- Windows8下如何使用命令行--转载
原文地址:http://jingyan.baidu.com/article/a501d80ce26fecec630f5ee0.html 命令行可用于实现一些没有图形界面的操作,然而windows8下的 ...
- Spring – Sending E-Mail Via Gmail SMTP Server With MailSender--reference
Spring comes with a useful ‘org.springframework.mail.javamail.JavaMailSenderImpl‘ class to simplify ...
- javascript笔记08:javascript的if...else语句
案例代码如下: <!DOCTYPE html> <html> <body> <p>点击这个按钮,获得基于时间的问候.</p> <but ...
- WPF遇到无边框的问题
今天做一个项目采用的是WPF开发并且在制作窗体的时候用到无边框的问题,由于WPF开发和winform开发用点不一样, 遇到了这个问题就帮这个遇到问题的解决方法写下来方便以后忘记了和给一些遇到的朋友做一 ...