Как передать в поток параметр?

Рейтинг: 1Ответов: 1Опубликовано: 14.03.2011

Создав поток с помощью API функции CreateThread и передав ему параметр, как можно в делфи принять или извлечь этот параметр?

Ответы

▲ 3

Для этого есть специальный аргумент в данной функции - lpParameter. То есть можно передать указатель на переменную или инициализированную структуру, а в потоке использовать эти значения для совершения необходимых действий.

Передавать его просто - сделать операцию получения адреса. Получить его - присвоить адрес своей переменной и сделать разыменование адреса.

var Nya: ^Integer;
A: Integer;
...
K := lpParam; // присваивание
...
A = 10 + K^; // использование

И вместо CreateThread лучше в Delphi BeginThread использовать.

Глобальные переменные, конечно, тоже можно, но там надо аккуратнее.