Справочник функций и процедур Delphi: EndThread

  Навигация по первой букве:

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

 

EndThread
Процедура
Заканчивает поток с кодом завершения System unit
  procedure EndThread ( ExitCode : Integer ) ;

Google  
 
Описание
Процедура EndThread заканчивает функцию потока, передавая ExitCode вызывающей программе.

Потоки - сложный вопрос (пример является очень простым примером, но всеже не настолько короток), и детально здесь не рассматривается.

Потоки могут быть начаты, используя BeginThread как в примере, или используя класс TThread.
Похожие команды
BeginThread  Начинает отдельный поток выполнения кода

IsMultiThread  Возвращает True, если код выполняет множество потоков

ThreadVar  Определяет переменные, которые получает каждый поток как отдельный экземпляр

 
Пример кода : Простой пример
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  Forms, Dialogs, Windows, SysUtils;

type
  TMsgRecord = record
    msg    : string[30];
  end;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

Implementation
{$R *.dfm}        // Include form definitions

ThreadVar         // Мы должны позволить каждому потоку его собственные образцы
                  // переданной переменной записи

  msgPtr : ^TMsgRecord;

// Частная процедура потока для показа строки
function ShowMsg(Parameter : Pointer) : Integer;
begin
  // Установка возвращаемого значения в 0
  Result := 0;

  // Установка указателя на переданные данные
  // Обратите внимание, что каждый поток имеет отдельную копию msgPtr
  msgPtr := Parameter;

  // Показ этого сообщения
  ShowMessagePos('Сообщение потока : '+msgPtr.msg, 200, 100);

  // Конец потока
  EndThread(0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  id1         : LongWord;
  thread1     : Integer;
  msg1        : TMsgRecord;
  showMsgFunc : TThreadFunc;

begin
  // Установка функции потока
  showMsgFunc := Addr(ShowMsg);

  // Установка наших отображаемых сообщений
  msg1.msg    := 'Hello World';

  // Проверяем, что мы не выполняем поток
  if IsMultiThread
  then ShowMessage('Многопоточный')
  else ShowMessage('Простой поток');

  // Начало выполнения первого потока, спрошивающего имя пользователя
  thread1 := BeginThread(nil,
                         0,
                         showMsgFunc,
                         Addr(msg1),
                         0,
                         id1);

  // Проверяем, что мы выполняем поток
  if IsMultiThread
  then ShowMessage('Многопоточный')
  else ShowMessage('Простой поток');

  // Гарантируем, что поток будет закрыт только когда всё сделано
  ShowMessagePos('Press this when thread dialog finished.', 200, 300);

  // Наконец, закрываем потоки
  CloseHandle(thread1);
end;

end.

Последовательность диалогов отобразит:

Простой поток
Многопоточный + Сообщение потока : Hello World
Нажмите это, когда диалог потока закончится.
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook