Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.032 c
2-1135759223
Max Zyuzin
2005-12-28 11:40
2006.01.22
Составляю SQL запросик


2-1136486058
Alexander2006
2006-01-05 21:34
2006.01.22
Запуск службы "Messenger"


14-1135408901
Yuri Btr
2005-12-24 10:21
2006.01.22
Проблема с MS help


8-1123675290
Voron
2005-08-10 16:01
2006.01.22
Как сделать снимок экрана


3-1132838076
DimMih
2005-11-24 16:14
2006.01.22
Работа с DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский