Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Показать удаленные записи в DBase
Категория: Базы данных
Категория: Базы данных
Wav файл внутри exe-файла
Категория: Файловая система
Категория: Файловая система
Cколько файлов есть в определённой папке
Категория: Файловая система
Категория: Файловая система
Округление целого числа до 5
Категория: Математика
Категория: Математика
Удалить или оставить симолы
Категория: Текст и строки
Категория: Текст и строки
Объект экрана — Screen
Категория: Компоненты
Категория: Компоненты
Преобразовать любой тип в строку
Категория: Текст и строки
Категория: Текст и строки
Числовой формат ячейки в Excel
Категория: Базы данных
Категория: Базы данных
Дата изменения файла
Категория: Файловая система
Категория: Файловая система
Создать *.mdb-файл и таблицу в ней
Категория: Базы данных
Категория: Базы данных
Delphi - Справочник: EndThread
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 Нажмите это, когда диалог потока закончится. |