Добрый день коллеги.
Мое приложение раз в минуту ходит в Интернет и загружает JSON файл около 100 кб. Данные из файла после загрузки парсятся во внутренние переменные.
Этот процесс (не проверял, загрузка или парсинг) заметно подвешивает UI приложения.
В системах, например, в Android работа с сетью обычно выделяется в отдельный поток в виде асинхронной задачи.
Какие best practice на этот счет есть у TP и Lazarus? Как избежать подвисания UI?
Работа с сетью. Отдельный поток?
Модератор: Модераторы
-
AlexDanilov
- новенький
- Сообщения: 17
- Зарегистрирован: 24.10.2016 14:11:46
- Откуда: Kiev
TMyThread = class(TThread)
http://wiki.freepascal.org/Multithreaded_Application_Tutorial/ru
http://wiki.freepascal.org/Multithreaded_Application_Tutorial/ru
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
AlexDanilov писал(а):Этот процесс (не проверял, загрузка или парсинг) заметно подвешивает UI приложения.
Скорее всего, парсинг. Для проверки можно вставить отладочный вывод перед загрузкой, после загрузки и после парсинга.
Если это так, то надо в цикл обработки вставить возможность переключения на другой поток (задачу) вызовом Application.ProcessMessages чтобы в середине обработки иметь возможность обновить UI.
