Firemonkey iPad ждет значок
У меня есть две вкладки в моем приложении. У них обоих есть таблица - одна для ввода и одна для вывода. Когда вкладка для выходной таблицы активирована, запускается процесс, который анализирует данные и заполняет выходную сетку.
Выходная сетка занимает несколько секунд для рендеринга, и я хотел бы отобразить анимированный значок. Я попробовал TImage с анимацией TFloat, а также TAniIndicator. Кажется, что они оба замирают, пока идет процесс анализа.
1 ответ
Похоже, у вас есть однопоточное приложение. Проблема в том, что один поток может выполнять одну "задачу" за раз.
В случае однопоточных приложений основной поток отвечает за несколько вещей:
- обработка пользовательского интерфейса (обновление, рисование и т. д.)
- выполнить ваш код, т.е. реагировать на события элемента управления, такие как TabXActivate()
- и т.п.
Поэтому, когда вы выполняете свою функцию Analyze(), основной поток блокируется и, следовательно, не может обновить пользовательский интерфейс. Как побочный эффект Анимации, кажется, зависают.
Я бы предложил перенести долгосрочные задачи в отдельные темы. После того, как задача выполнена, подайте сигнал главному потоку, чтобы остановить индикатор и продолжить получать пользовательский ввод. Таким образом, основной поток IU не будет заблокирован, и TAniIndicator будет работать правильно.
NB: Остерегайтесь синхронизации потоков и безопасности потоков! Компоненты VCL/FMX НЕ являются потокобезопасными. Вы можете найти полезную информацию здесь: