Друзья, запускаю программу, через некоторое время ловлю зависание.
Используется thread (иначе программа сразу зависает: надо опрашивать сервер).
В справке написано что "Не рекомендуется изменять внешний вид интерфейсных элементов из схемы, стоящей после метода doExec". Я не могу понять, если я отправил запрос, получил данные и разложил по элементам Edit, это уже изменение интерфейса? Если да, то как быть? Мне надо запрос в потоке отправить и показать их юзеру.
Этот топик читают: Гость
Ответов: 127
Рейтинг: 0
|
|||
карма: 0 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 8887
Рейтинг: 823
|
|||
faniss, "внешний вид" -- длина, ширина, отступы. А текст в Edit -- "содержание"
|
|||
карма: 19 |
|
Ответов: 127
Рейтинг: 0
|
|||
Леонид, спасибо. Значит, дело не в бобине.
|
|||
карма: 0 |
|
Разработчик
Ответов: 26061
Рейтинг: 2120
|
|||
Леонид писал(а): "внешний вид" -- длина, ширина, отступы. А текст в Edit -- "содержание"Не правильный ответ. Любое действие с интерфейсными элементами, будь то изменение размеров, или вывод текста приводит к выполнению перерисовки системой этого самого интерфейсного элемента. Может наступить такой момент, когда система перерисовывает элемент, а параллельный поток выставляет ей новые данные внутри очереди событий перерисовки, вот тогда запросто может наступить крэш. Если вы меняете текст из параллельного потока в асинхронном режиме, то запишите его в буфер и считайте этот буфер в интерфейсный элемент в синхронном режиме. Редактировалось 1 раз(а), последний 2018-07-08 14:01:04 |
|||
карма: 22 |
|
Ответов: 127
Рейтинг: 0
|
|||
Вот. Тогда пример по Thread из справки тоже по сути неправильный?
|
|||
карма: 0 |
|
Разработчик
Ответов: 26061
Рейтинг: 2120
|
|||
faniss писал(а): Тогда пример по Thread из справки тоже по сути неправильный?Да, некорректный. Запись в элемент происходит в асинхронном режиме (из параллельного потока), а перерисовка элемента происходит в синхронном режиме (в главном потоке приложения). Так делать крайне нежелательно. Не факт, что это приведет именно в данный момент к крэшу, но может привести в любой другой момент. Редактировалось 1 раз(а), последний 2018-07-08 20:09:01 |
|||
карма: 22 |
|
Ответов: 4621
Рейтинг: 746
|
|||
nesco писал(а): Если вы меняете текст из параллельного потока в асинхронном режиме, то запишите его в буферЛеонид писал(а): "внешний вид" -- длина, ширина, отступы. А текст в Edit -- "содержание" |
|||
карма: 26 |
|
Ответов: 8887
Рейтинг: 823
|
|||
Netspirit писал(а): Как и сказал nesco |
|||
карма: 19 |
|
8