Delphi→ Многопоточность в Delphi
Авг 14, 2010
Обновление 2022
Потоки — если вам необходимо непрерывное выполнение задач, а именно их параллельность без остановки работы программы скажем по выводу ShowMessage(‘ALARM!’); то потоки дадут лучший результат не подвешивая вашу программу. Особенно потоки необходимы при работе с базами, графикой, сетью, а так же распределенном вычисление на разных машинах,
Недавно освоил азы многопоточности и решил поделиться рабочим примером.
В примере используется один поток, таким образом, что при работе с сетью графический интерфейс не виснет.
Увлечение количества потоков осуществляется добавлением переменных (создания массива) Thread.
Пример позволяет продолжать работу программы (работать с формой) пока идет закачка содержания страницы http://ya.ru. На сегодняшнее время большенство сайтов переведено на SSL, HTTPS протокол и данные метод может не сработать на 100% со всеми сайтами, использование Delphi и SSL будет описано в отдельной статье или читайте главный FAQ по потокам в Delphi.
unit worklogu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdHTTP;
type
TfrmWorklog = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
// объявляем класс, наследующий класс TThread
type
TMultiThread = class(TThread)
protected
// переопределяем метод Execute
procedure Execute; override;
end;
var
frmWorklog: TfrmWorklog;
// переменная для класса TMultiThread
Thread: TMultiThread;
HTTP: TidHTTP;
DataContent: string;
implementation
{$R *.dfm}
// реализация метода Execute
procedure TMultiThread.Execute;
begin
HTTP := TidHTTP.Create;
try
DataContent := HTTP.Get('http://ya.ru');
except
// Error
end;
HTTP.Free;
end;
procedure TfrmWorklog.FormCreate(Sender: TObject);
begin
// создание экземпляра класса
Thread := TMultiThread.Create(true);
// после завершения потока, уничтожать его
Thread.FreeOnTerminate := true;
// запуск потока
Thread.Resume;
end;
end.
Похожие статьи:
хочу зарегистрироваться на форуме