• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

我学Delphi心得与笔记-------多线程实例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

关于线程的原理:其实并没有真正的多线程,所谓的多线程只不过是CPU的执行效率高,将任务分成多个点,基本能达到同时执行的效果.

关于Delphi下的多线程的应用需要说明的是:同时开启的线程数以及线程执行的方法都会影响cpu的执行效率,一般的情况下,能不用线程就不要用;下面写一个Delphi的多线和应用的例子:

----------------------------多线程的申明

type

  TmapQueryThread=class;

  TmapQueryThread=class(TThread)

  private

    vehicleId:string;

    Lon:integer;

    Lat:integer;

    AreaName:string;

  public

    constructor Create(vid:string;slon,slat:integer);

 protected

    procedure Execute;override

    procedure GetAreaName;

    procedure BeginView;

end;

-----------------------------------多线程的实现

constructor  TmapQueryThread.Create(vid:string;slon,slat:integer);

begin

  inherited Create(False);

  vehicleId := vid;

  Lon:= slon;

  Lat:=slat;

  AreaName := '';

end;

procedure  TmapQueryThread.Execute;

begin

  inherited;

  GetAreaName;

  if not Terminated then

  begin

    Synchronize(BeginView);

  end;

end;

//根据经纬度获取网络51地图的地址

procedure TmapQueryThread. GetAreaName;

var
  Url:string;
  node:IxmlNode;
  xmldocm:TxmlDocument;

begin

  CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
  Url := 'http://rgc.vip.51ditu.com/rgc?pos='+ FloatToStr(slon)+','+FloatToStr(slat)+'&type=1';
  try
    xmldocm := TXMLDocument.Create(Application);
    xmldocm.LoadFromFile(Url);
    node := xmldocm.DocumentElement.ChildNodes[1].ChildNodes[0];
    AreaName := SubStr(node.Text);
  except
    AreaName := '网络地址获取错误,请重试';
  end;
  xmldocm.Free;
  CoUninitialize;  

end;

//对结果进行操作

procedure TmapQueryThread.BeginView;

begin

  showmessage(AreaName);//areaName为查询的返回结果,可以自行操作

end;

 

------------------线各线束,在程序中实现应用该线程

procedure TFrom1.Btn1_Cliek(Sender: TObject);

begin

  TmapQueryThread

  mapQueryThread:=TmapQueryThread.Create('123456',158746111,1200000);//线程实例化

end;

 以上只是在项目中应用的一个小小的线程实例,可能存在一些小剖疏忽,

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi各销售版本之间的区别发布时间:2022-07-18
下一篇:
Delphiandroid如何使用Bluestacks模拟器发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap