Как выполнить TThread с параметром, как в Windows API? - PullRequest
2 голосов
/ 31 марта 2011

Когда я создаю TThread, я не могу передать параметры в поток, поэтому мне нужно использовать глобальные переменные или что? Я использую Embarcaderos Rad Studio C ++ Builder 2010

Ответы [ 2 ]

6 голосов
/ 31 марта 2011

У вас есть класс, полученный из TThread, верно?Можете ли вы просто заставить ваш конструктор класса принимать дополнительные аргументы (помимо bool suspended, который кажется обычным)?

5 голосов
/ 31 марта 2011

Альтернативой предоставлению другого конструктора является простое назначение свойств потока между временем создания объекта и временем его запуска.

bool suspended = true;
TSergeyThread* thread = new TSergeyThread(suspended);
thread->Property1 = 4;
thread->SetValue("foo");
thread->Start(); // or ->Resume(), if your VCL is too old

Хотя лучше предоставить всю эту информацию в конструкторе. (RAII и все такое.)

...