Форум: "Основная";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизЗавершение потока 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c