码迷,mamicode.com
首页 > 其他好文 > 详细

Omnithreadlibary学习(3)-IOmniTask异步执行SendMessage

时间:2014-08-13 18:39:27      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   ar   

在任务中发送消息, 可以是函数或者对象方法

  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.消息没有接收到..奇怪了

bubuko.com,布布扣

Omnithreadlibary学习(3)-IOmniTask异步执行SendMessage,布布扣,bubuko.com

Omnithreadlibary学习(3)-IOmniTask异步执行SendMessage

标签:style   blog   http   color   os   io   for   ar   

原文地址:http://www.cnblogs.com/pengshaomin/p/3910633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!