Показать сообщение отдельно
Старый 31.10.2004, 13:30     # 3
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
Вобщем на Делфях легко работать с потоками =))))

Идешь в File->New->Other...->Thread Object

Вводишь Class Name ( типа TMyThread =))) )

Тыкаешь ок и уже класс потока есть =) Уже есть процедура Execute - она выполняется сразу после создания потока....

Так же есть { Important: ... } там говорится, что просто так к компонентам не добраться, а нужно синхранизировать доступ...

т.е. создаешь процедуру, в которой делается что-то с компонентом, а потом из Execute вызываешь Synchronize(ProcedureName)...

У потока есть свойство FreeOnTerminate:boolean - удалять при остановке или нет, и свойство OnTerminate:TNotifyEvent - процедура, которая вызывается при остановке потока....

Еще, если ты пишешь процедуры Create и OnTerminate, то в них Synchronize не вызываешь!!! а то зависнешь =))))

А в программе юзать тоже лекго:

Код:
var
 Thr:TMyThread;
begin
 Thr:=TMyThread.Create(false);
 ...
 Thr.Suspend;
 ...
 Thr.Resume;
 ...
 Thr.Terminate;
 ...
end;
В Create передается параметр Boolean, который сигнализирует, создать поток приостановленным, или сразу запускать.... (если приостановленным, то потом надо вызвать Thr.Resume)

Thr.Susdend - приостановить выполнение
Thr.Resume - запустить
Thr.Terminate - вырубить

Последний раз редактировалось f00rd; 31.10.2004 в 13:32.
f00rd вне форума