0
Я хотел бы сделать быстрый неблокируемый модальный диалог, который появляется, выполняя некоторые задачи, и уходит, когда задачи заканчиваются.Как сделать анимацию GIF на «пожалуйста, подожди»?
Есть некоторые трудности, присущие:
- Не блокировать основной поток пользовательского интерфейса;
- Не оставляйте окна системных призраков;
- Перемещение задач в отдельный поток;
- Разрешить обновлять ожидающее сообщение пользователю;
- Обработка исключений из потока в приложение;
- Показать анимированный GIF в диалоговом окне;
Как обойти эти подводные камни?
Ниже практический пример того, как я хотел бы использовать его:
TWaiting.Start('Waiting, loading something...');
try
Sleep(2000);
TWaiting.Update('Making something slow...');
Sleep(2000);
TWaiting.Update('Making something different...');
Sleep(2000);
finally
TWaiting.Finish;
end;
'Sleep (2000)' является проблемой. Не блокируйте основной поток пользовательского интерфейса. Вам нужно будет переместить длинные запущенные задачи в отдельный поток. –
Хорошо, я вижу, но переместить мои текущие задачи в отдельный поток может быть трудным ... Есть ли способ заставить TWaiting работать в отдельный поток? – dipold
Нет. Этот способ не работает. Вам нужно остановить блокировку потока пользовательского интерфейса. Это твоя проблема. –