Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TThread


Автор: ZIFIR 23.10.2006, 11:48
По кнопке включается Timer1 и выполняются действия. Как мне поместить все это в поток?
Заранее спасибо.

Автор: _hunter 23.10.2006, 12:01
все выполняемые децстаия перенеси в метод Execute потока.
да и на форуме поискать не помешалобы...

P.S.
если среди выполняемых действий есть обращения к интерфейсу -- нужна синхронизауия (смотри в справке Synchronize)

Автор: a_n_d_y 23.10.2006, 14:34
2 ZIFIR
В метод Synchronize передается адрес функции, которая обрабатывает критическую секцию.
В хелпе есть хороший пример

Автор: ZIFIR 23.10.2006, 19:56
В таймере запускаю поток
Код

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Thr->Resume();
}

Далее
Код

void __fastcall MyPotok::Execute()
{
FreeOnTerminate = true;
if(!Terminated) {
        Synchronize(UpdateTimer);}
}


Код

void __fastcall MyPotok::UpdateTimer()
{
//Вычисления
}

Необходимо вычисления производить по таймеру

Автор: Romikgy 23.10.2006, 21:01
ZIFIR, и на кой те поток то? в такой реализации?

Автор: ZIFIR 23.10.2006, 21:16
Выполняется Ping по таймеру. Когда узел пингуется программа не тормозит, если узел недоступен
то программа зависает до каждого таймаута. 

Автор: Romikgy 23.10.2006, 21:23
Цитата(ZIFIR @  23.10.2006,  18:56 Найти цитируемый пост)
Synchronize(UpdateTimer);}

имхо для пинга это не надо 
в синхро засунь только отображение результата

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)