Поиск сообщества
Показаны результаты для тегов 'Потоки'.
Найдено: 3 результата
-
Ну всё в принципе как всегда, либо я барашка, либо лыжи не едут) А всё просто - я хочу, чтобы пока данные с сервера загружались по клику кнопки, пользователю элементарно был отклик в виде крутящейся какой нибудь фигни и он видел, что процесс идёт и что прога не зависла и никуда лишний раз не тыкал. Пока что для тестов сделала элементарно кнопку Update (speedbutton с image), данные элементарно грузятся и отображаются в GridPanel, а поверх него, чтоб пользователь и не смог куда либо тыкнуть, замостила панелькой с Image, вращаемой по таймеру (всё это дело наверху Visible:=false). И когда клацаем по кнопке Update, то панельку сверху грида делаю отображаемой и запускаю таймер, потом этот же обработчик/процедура грузит данные, а по окончанию останавливаем таймер и скрываем полупрозрачну, еще кстати, панельку. Аля вот так: procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin //отображаем лого загрузки P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; //с запуском таймера GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется //и скрывае лого загрузки Timer_load_rotate.Enabled := false; //уже в обратном порядке P_showLoad.Visible := false; end; иии... ни черта не происходит как я хочу( Это лого вообще в итоге не отображается, а если убрать его скрытие, то оно у нас отобразится уже только тогда, когда всё загрузится. Логика мне стала подсказывать, что следовало его как то отобразить выполнив в параллельном асинхронном потоке аля так: procedure TForm1.SB_DataUpdateClick(Sender: TObject); begin TThread.Queue(TThread.Current, //TThread.Queue TThread.Synchronize ForceQueue procedure() begin P_showLoad.Visible := true; Timer_load_rotate.Enabled := true; end); GetDeD_List(DE_set.Date); //процедура загрузки и отображения чего нам надо, которая весьма долго выполняется end; И опять оно отображается только после того, как всё загрузится и проработает вся процедура. И уже чего только не пробовала и Synchronize и ForceQueue; и через TTask.Run и |task := TTask.Create(procedure () ... и т.д.| ничего не подходит, вот хоть убейся это всё дело будет отображаться только после полной отработки процедуры клика. Может я не в том направлении вообще рою и это как то по другому делается? Может я еще пока отлаживаю на Win32, а не всё на android, а там вот пара вариантов и норм на нём работают? Но чтот я никак не могу понять, что к чему... должно же быть как то просто, а я чтот никак не могу понять как(
-
Всем привет! Кто уже работал с потоками в Android, поделитесь опытом. Нужно создать POSIX поток. Под виндой это делается просто: HANDLE hThr; unsigned long uThrID; //метод который запускается в новом потоке void threadMethod(void *pParams) { //... код ... } //Вызов метода в новом потоке hThr = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) threadMethod, NULL, CREATE_SUSPENDED, &uThrID); SetThreadPriority(hThr, THREAD_PRIORITY_HIGHEST); ResumeThread(hThr); А вот на Андроиде как такое организовать? Заранее благодарю за помощь!
-
Здравствуйте. Подскажите пожалуйста как сделать правильно. По нажатию на Button происходит запрос к серверу. Сейчас я делаю запрос вызывая отдельный поток. А на время выполнения показываю просто layout на весь экран с вращающимся AniIndicator. Правильно ли вообще делать это в отдельном потоке и если нет, то как правильно, подскажите плз. И нормально ли выводить отдельный layout с индикатором, или же стоит использовать какое нибудь системное окошко со значком ожидания? Если системное, то как его вызвать?
- 1 ответ
-
- TAniIndicator
- TProgressBar
- (и ещё 4 )