Delphi → Многопоточность в Delphi

Авг 14, 2010

Недавно освоил азы многопоточности и  решил поделиться рабочим примером.

В примере используется один поток, таким образом, что при работе с сетью графический интерфейс не виснет.

Увлечение количества потоков осуществляется добавлением переменных (создания массива) Thread.

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.

Post to Twitter

Похожие статьи:

  1. Компонент Antigate для Delphi
  2. Компоненты в массиве TObjectList
  3. Взаимодействие Oracle и Delphi
  4. Создаем компонент TCP на Winsock (Часть 1)
  5. Создаем компонент TCP на Winsock (Часть 2)

Комментарии (2)

  1. avatar

    r3code
    Февраль 2nd, 2011 at 15:32 #

    Это о чем речь?
    «Увлечение поточности …» это вообще неизвестное науке определение.
    Программу можно сделать одно или много поточной.
    MultiThread.Create(false); всего лишь запускает выполнение потока немедленно.
    Советую разобратся с потоками внимательно изучив хороший материал
    «Многопоточность — как это делается в Дельфи. Не используйте потоки, не прочитав это »
    http://forum.vingrad.ru/topic-60076.html

  2. avatar

    GlooK
    Февраль 3rd, 2011 at 02:29 #

    С потоками уже давно разобрался.
    «Не используйте потоки, не прочитав это» — не будьте критичны.

Ваш комментарий

Rambler's Top100 Яндекс.Метрика