|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.06.2018, 19:37 | #1 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 260
|
потоки(TThread) и свойства(property), не все понятно
Добрый день. Есть следующий демокод:
Код:
Вопрос : как вывести результат работы потока в обработчики но без "Synchronize", трубы и прочего из той же оперы а через "property". если такое для потока вообще возможно. что то читал про OnTerminate но ничего канкретно применительно к "property" не нашлось. |
04.06.2018, 20:19 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
К примеру так.
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
04.06.2018, 20:51 | #3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Или мьютекс использовать. Мьютекс не исключает того что нужна архитектура. Так как кривая архитектура приводит к дедлокам и гонкам потокам.
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
04.06.2018, 20:56 | #4 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 260
|
большое спасибо, вывод данных есть
и вопрос : с ThreadJob.WaitFor; ThreadJob.Destroy; и FreeOnTerminate := FALSE; в общем все понятно (перенос запуска остановки потока для передачи параметров пока поток жив) но что значит ReturnValue:=1; ??? а также WaitFor, если в DoJob.Execute идет процесс асинхронгного обмена данными между клиентом и сервером , будет ли WaitFor правильно работать. вообще сейчас использую передачу результата в глобПерем(из DoJob.Execute) и таймер на форме для проверки поступления результатов. будет ли способ передачи-возврата данных через параметры работоспособным в данной ситуации? |
04.06.2018, 21:20 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Для наглядности можно сделать так:
Const ttDone=1; ReturnValue:=ttDone; ReturnValue - это просто флаг если число отлично от 0 то WaitFor выходит из цикла. Это жёсткая блокировка. Если основной поток вам не нужен то всё норм. Если нужен, то надо свой огород городить. Очередь сообщений и прочие вещи. Так что на вашем месте я бы отставил глобальные переменные и таймер. Если не хотите глобальные переменные то каждое поле класса обернуть в мьютекс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
04.06.2018, 21:21 | #6 |
Форумчанин
Регистрация: 04.01.2011
Сообщений: 260
|
еще раз спасибо. буду теперь экспериментировать дальше.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
НЕ все понятно с функцией WMI | Pcrepair | Общие вопросы Delphi | 2 | 03.03.2016 22:14 |
Потоки. Закрываются все потоки при ошибке в одном. | Son | Общие вопросы Delphi | 11 | 01.11.2013 09:32 |
Можно ли использовать TNotifyEvent через property, в TThread? | Человек_Борща | Общие вопросы Delphi | 4 | 26.06.2012 19:57 |
Notice: Trying to get property of non-object. для property of static property | Jakethefish | PHP | 8 | 16.08.2011 16:09 |
Потоки(TThread). Возврат значений функции. | Delphi_ProGer | Общие вопросы Delphi | 11 | 07.08.2011 22:50 |