Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Показать удаленные записи в DBase
   Категория: Базы данных
  Wav файл внутри exe-файла
   Категория: Файловая система
  Cколько файлов есть в определённой папке
   Категория: Файловая система
  Округление целого числа до 5
   Категория: Математика
  Удалить или оставить симолы
   Категория: Текст и строки
  Объект экрана — Screen
   Категория: Компоненты
  Преобразовать любой тип в строку
   Категория: Текст и строки
  Числовой формат ячейки в Excel
   Категория: Базы данных
  Дата изменения файла
   Категория: Файловая система
  Создать *.mdb-файл и таблицу в ней
   Категория: Базы данных

Delphi - Справочник: EndThread

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 EndThread
procedure EndThread ( ExitCode : Integer ) ;
Процедура (Unit System)
Заканчивает поток с кодом завершения
Описание:
Процедура EndThread заканчивает функцию потока, передавая ExitCode вызывающей программе.

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

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

// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем 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
Нажмите это, когда диалог потока закончится.

  << Вернуться