Работа с сетью. Отдельный поток?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Работа с сетью. Отдельный поток?

Сообщение AlexDanilov » 28.05.2017 18:08:12

Добрый день коллеги.

Мое приложение раз в минуту ходит в Интернет и загружает JSON файл около 100 кб. Данные из файла после загрузки парсятся во внутренние переменные.

Этот процесс (не проверял, загрузка или парсинг) заметно подвешивает UI приложения.

В системах, например, в Android работа с сетью обычно выделяется в отдельный поток в виде асинхронной задачи.

Какие best practice на этот счет есть у TP и Lazarus? Как избежать подвисания UI?
AlexDanilov
новенький
 
Сообщения: 17
Зарегистрирован: 24.10.2016 15:11:46
Откуда: Kiev

Re: Работа с сетью. Отдельный поток?

Сообщение vitaly_l » 28.05.2017 18:14:18

Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Работа с сетью. Отдельный поток?

Сообщение Лекс Айрин » 29.05.2017 12:32:25

AlexDanilov писал(а):Этот процесс (не проверял, загрузка или парсинг) заметно подвешивает UI приложения.


Скорее всего, парсинг. Для проверки можно вставить отладочный вывод перед загрузкой, после загрузки и после парсинга.
Если это так, то надо в цикл обработки вставить возможность переключения на другой поток (задачу) вызовом Application.ProcessMessages чтобы в середине обработки иметь возможность обновить UI.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 11

Рейтинг@Mail.ru