S
Shouldercannon
Данный поток построен верно?
Как можно TNewThread_ThreadTerminate описать в потоке TNewThread = class(TThread), а не отдельно, если это вообще возможно?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TNewThread_ThreadTerminate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TNewThread = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
NewThread: TNewThread;
begin
NewThread := TNewThread.Create(True); // Поток создан и остановлен
NewThread.FreeOnTerminate := True; // Уничтожить поток после завершения работы
NewThread.Resume; // Запуск потока
NewThread.OnTerminate := TNewThread_ThreadTerminate;
end;
procedure TNewThread.Execute;
var
HTTP: TIdHTTP;
TMS: TMemoryStream;
begin
HTTP := TIdHTTP.Create(nil);
TMS := TMemoryStream.Create;
try
try
HTTP.Get('http://img.yandex.net/i/www/logo.png', TMS);
TMS.SaveToFile('logo.png');
except
end;
finally
HTTP.Free;
TMS.Free;
end;
end;
procedure TForm1.TNewThread_ThreadTerminate(Sender: TObject);
begin
// Что-то
end;
end.