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} // Вложение определений формы
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('Нажмите это, когда диалог потока закончится.', 200, 300); // Наконец, закрываем потоки
CloseHandle(thread1);
end;
end.
Последовательность диалогов отобразит:
Простой поток
Многопоточный + Сообщение потока : Hello World
Нажмите это, когда диалог потока закончится.