tag:blogger.com,1999:blog-4939523172768679277.post4867022415280438377..comments2023-05-15T18:16:10.322+02:00Comments on Lazarus Development: Threads with LazarusVincent Snijdershttp://www.blogger.com/profile/04065272115346942274noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-4939523172768679277.post-33074323205531636612015-11-07T05:01:00.490+01:002015-11-07T05:01:00.490+01:00Por si a alguien le sirve, yo utilize este código ...Por si a alguien le sirve, yo utilize este código mediante "hilos" en lazarus para descargar un programa, pues sin hilo en la descarga congelaba la aplicación hasta que acabáse:<br /><br />--------------------------------------------------<br />unit Unit1;<br /><br />{$mode objfpc}{$H+}<br /><br />interface<br /><br />uses<br /> Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, httpsend;<br /><br />type<br /> { TFooThread }<br /> TFooThread = class(TThread)<br /> protected<br /> procedure Execute; override;<br /> end;<br /><br /> { TForm1 }<br /><br /> TForm1 = class(TForm)<br /> Button1: TButton;<br /> procedure Button1Click(Sender: TObject);<br /> procedure FormCreate(Sender: TObject);<br /> private<br /> { private declarations }<br /> public<br /> { public declarations }<br /> end;<br /><br />var<br /> Form1: TForm1;<br /><br />implementation<br /><br />{$R *.lfm}<br /><br />{ TForm1 }<br /><br />function DownloadHTTP(URL, TargetFile: string): Boolean;<br />var<br /> HTTPGetResult: Boolean;<br /> HTTPSender: THTTPSend;<br />begin<br /> Result := False;<br /> HTTPSender := THTTPSend.Create;<br /> try<br /> HTTPGetResult := HTTPSender.HTTPMethod('GET', URL);<br /> if (HTTPSender.ResultCode >= 100) and (HTTPSender.ResultCode<=299) then begin<br /> HTTPSender.Document.SaveToFile(TargetFile);<br /> Result := True;<br /> end;<br /> finally<br /> HTTPSender.Free;<br /> end;<br />end;<br /><br />procedure TForm1.Button1Click(Sender: TObject);<br />begin<br /><br />end;<br /><br />procedure TForm1.FormCreate(Sender: TObject);<br />var<br />foothread: TFooThread;<br />begin<br /> FooThread := TFooThread.Create(True);<br /> // antes de que comienze el hilo aqui poner mi codigos de siempre<br /><br /> foothread.Start;<br />end;<br /><br /><br />procedure TFooThread.Execute;<br />begin<br /> //while (not Terminated) and (true {any condition required}) do begin<br /> DownloadHTTP('http://casa/usb_rescate_plus.zip','usb_rescate_plus.zip');<br /> // do stuff<br /> end;<br /><br />end. <br /><br /><br />De tantos intentos al menos logré algo, espero les sirva, permiso.usbrescatehttps://www.blogger.com/profile/14432776916339347209noreply@blogger.com