Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Завершение потока TTread;   Найти похожие ветки 

 
OlegNik   (2005-12-16 15:06) [0]

Предистория:
Есть поток : TTread_1
задача которого состоит в том, что он должен расчитывать и  отображать характеристики объекта во времени.
Есть начало и конец работы TTread_1
a : TTread_1;                      // объявил
a := TTread_1.Create(False); // запустил
впроцессе работы получаю и любуюсь результатами работы потока
по истечению времени работы
поток сам себя убивает TerminateThread(a.Handle,0);
Внимание вопрос и мои проблемы ?.
Пришлось отслеживать работу нескольких объектов, то есть
несколько раз  запустить TTread_1
Как обратится теперь к нужному ОПРЕДЕЛЕННОМУ объекту TTread_1 и получить его характеристики (его переменные)?
Как по истечению работы остановить или закончить работу ОПРЕДЕЛЕННОГО потока TTread_1?
Примечание: мне не известно сколько раз запустит TTread_1
пользователь, то есть не известно количество объектов.


 
Digitman ©   (2005-12-16 15:09) [1]


> поток сам себя убивает TerminateThread(a.Handle,0);


что за суицид ?!
нормальное завершение поточной ф-ции уже не модно ?
харакири обязательно ?


 
clickmaker ©   (2005-12-16 15:10) [2]

TThreadList
либо просто TList с TThread


 
Digitman ©   (2005-12-16 15:11) [3]


> Как обратится теперь к нужному ОПРЕДЕЛЕННОМУ объекту TTread_1


заведи массив и складывай в его элементы ссылки на созданные тобой thread-объекты


 
OlegNik   (2005-12-16 15:15) [4]

Digitman. Подробнее на счет суицида и вариант(ы) альтернативного решения
TerminateThread(a.Handle,0);
Кроме того, если Вы заметили есть второй вопрос вернее первый:
Как обратится теперь к нужному ОПРЕДЕЛЕННОМУ объекту (TTread_1) и получить его характеристики (его переменные)?


 
clickmaker ©   (2005-12-16 15:44) [5]


> Как обратится теперь к нужному ОПРЕДЕЛЕННОМУ объекту (TTread_1)

TThread(List.Items[i]).ThreadProperty если TList
aThreads[i].ThreadProperty если array of TThread


 
Digitman ©   (2005-12-16 15:46) [6]


> Подробнее на счет суицида и вариант(ы) альтернативного решения


нет никаких хитрозадых "альтернативных" решений : как только метод Execute() завершает свое выполнение (штатно, т.е. без необработанных потенциальных исключений в его теле), в первом приближении можешь считать, что поток завершился

procedure TMyThread.Execute;
begin
 try
   .. что угодно ..
   Exit; //штатное завершение "поточной функции"
   ..
 except
  .. здесь можно вести протоколирование не ожидаемых исключений, НИ В КОЕМ случае не вызывая при этом raise;
 end;
end; //штатное завершение "поточной функции"


> Кроме того, если Вы заметили есть второй вопрос вернее первый


ты не расставил приоритеты в своих вопросах, так "чего ж тебе надобно, старче ?" (С)


> Как обратится


на него я ответил в [3]

а в [2] - альтернативное решение, зачастую гораздо лучшее. нежели решение с массивами


 
OlegNik   (2005-12-16 16:06) [7]

Благодарю за решение проблем : clickmaker, Digitman (в алфавитном порядке).
Вопрос считаю утратившим силу. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
11-1118072963
Ilnur
2005-06-06 19:49
2006.01.22
messagebox properties


1-1134721882
Alex_KV
2005-12-16 11:31
2006.01.22
Перевод заголовочного файла С


2-1135764171
Slaga
2005-12-28 13:02
2006.01.22
Есть ли ограничение на длину названия DBF ного файла


2-1136646305
аматор
2006-01-07 18:05
2006.01.22
убрать нули в Еш


14-1135865822
default
2005-12-29 17:17
2006.01.22
Кто-нибудь разрабатывал нечеткие регуляторы?