首页 > 其他 > 详细

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

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

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

  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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!