![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,898
|
![]()
1. Можно ли в потоке считывать данные из переменной, которая объявлена глобальной (string, integer, boolean)?
Код:
Код:
3. В каких случаях нужно обращаться к переменным или другим объёктам в потоке через Form1.Label1.Caption := ''; и тд.? 4. Каким образом по завершению работы потока вывести сообщение? Знаю, что за это отвечает событие Terminate. 5. Как будет правильно выглядеть скелет потока с процедурой Terminate? Явно не так Код:
Пока вроде всё. |
![]() |
![]() |
![]() |
#2 | ||||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
Обязательно. MREW, критическая секция или хотя бы Synchronize. Цитата:
И наоборот. Надо передать - пусть поток сохранит в переменные. А форма перенесёт данные из переменных в компоненты. Делается это через Synchronize или оконные сообщения. Цитата:
Цитата:
Например, так (заодно показан пример передачи значения переменной потоку): Код:
Цитата:
В случае 1 вам нужно передать значение переменной в конструктор потока или же в поле (до запуска потока). Во втором случае - нужно синхронизировать доступ (MREW/CS/Synchronize).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||||
![]() |
![]() |
![]() |
#3 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,898
|
![]()
Данная запись будет считаться верной?
Код:
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Ээээ... я даже не знаю, что сказать.
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
#5 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,898
|
![]() Цитата:
![]() Это комментарий, хотя получилось забавно ![]() Последний раз редактировалось Shouldercannon; 14.12.2011 в 19:00. |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
![]()
из потока можно без каких-либо опасений можно взаимодействовать с VCL через оконные сообщения (SendMessage)
Код:
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
Последний раз редактировалось haruhi; 14.12.2011 в 19:05. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Есть предложение выкинуть такой код и написать самому.
Явная ошибка - TDownload_ThreadTerminate должен быть методом, а не процедурой (в чём разница?). Кроме того, код в целом достаточно коряво написан. Я бы сделал так: 1. Инициализация потока - только в его конструкторе. 2. Все значения, что необходимы потоку для работы - передавать в конструктор. 3. Обработка ошибок - стандартная от TThread. 4. Окончание работы - либо синхронно, либо асинхронно с сообщением. 5. Вынес бы код потока в отдельный модуль. Итого: Код:
Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#8 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,898
|
![]()
Возможно, я где-то не внимательно посмотрел, но где по окончанию работы потока можно, например, запустить другое приложение?
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Можно .
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#10 |
Участник клуба Подтвердите свой е-майл
Регистрация: 26.01.2008
Сообщений: 1,898
|
![]()
Скорее всего это надо делать здесь
Код:
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросец по потокам | stlcrash | Общие вопросы Delphi | 8 | 11.07.2016 19:36 |
При освобождении обьекта TThread, он вешает всю программу. При этом код Execute у TThread уж выполнился.. | Человек_Борща | Общие вопросы Delphi | 23 | 30.11.2011 09:18 |
Вопрос по потокам | Karamzda | Общие вопросы C/C++ | 1 | 17.11.2010 16:43 |
Вопрос по потокам | mspavlyxa | Помощь студентам | 6 | 25.03.2010 23:46 |
Вопрос по потокам | Eretic | Общие вопросы по Java, Java SE, Kotlin | 5 | 02.04.2009 00:17 |