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

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

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

Ответить
AlexDanilov
новенький
Сообщения: 17
Зарегистрирован: 24.10.2016 14:11:46
Откуда: Kiev

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

Сообщение AlexDanilov »

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

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

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

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

Какие best practice на этот счет есть у TP и Lazarus? Как избежать подвисания UI?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

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


Скорее всего, парсинг. Для проверки можно вставить отладочный вывод перед загрузкой, после загрузки и после парсинга.
Если это так, то надо в цикл обработки вставить возможность переключения на другой поток (задачу) вызовом Application.ProcessMessages чтобы в середине обработки иметь возможность обновить UI.
Ответить