Omnithreadlibary学习(2)-IOmniTask异步执行

本文介绍了一种使用Delphi并行库OtlParallel进行多线程网页抓取的方法。通过具体的代码示例展示了如何利用匿名委托启动并行任务,并实现对指定URL的GET请求。此外还涉及了HTTP请求头的设置以及响应结果的读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.使用

procedure Parallel.Async(task: TProc; taskConfig: IOmniTaskConfig);

匿名委托访问网站

program main;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  OtlParallel, OtlTask,
  IdHttp,
  Web.HTTPApp,
  System.classes, WinApi.Windows;

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;
begin
  Parallel.Async(
   procedure(const task: IOmniTask)
   begin

      Writeln('Thread ID ' + GetCurrentThreadID.ToString());
      HttpGet('http://zh.wikipedia.org/',  String(HttpEncode('wiki/文档')));
      //访问主界面资源使用Invoke Invoke主线程运行, 访问GUI
     // task.Invoke();
   end
  );

  Parallel.Async(
   procedure(const task: IOmniTask)
   begin
      Writeln('Thread ID ' + GetCurrentThreadID.ToString());
      HttpGet('http://zh.wikipedia.org/',  String(HttpEncode('wiki/文档')));
      //访问主界面资源使用Invoke
   //   task.Invoke();
   end
  );

  Parallel.Async(
   procedure(const task: IOmniTask)
   begin
      Writeln('Thread ID ' + GetCurrentThreadID.ToString());
      HttpGet('http://zh.wikipedia.org/',  String(HttpEncode('wiki/文档')));
      //访问主界面资源使用Invoke
   //   task.Invoke();
   end
  );
  writeln('异步执行');
  Readln;
end.

转载于:https://www.cnblogs.com/pengshaomin/p/3910500.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值