Перейти к содержанию
Fire Monkey от А до Я

Ivan B.

Пользователи
  • Постов

    22
  • Зарегистрирован

  • Посещение

Активность репутации

  1. Like
    Ivan B. отреагировална ENERGY в Индикатор замирает во время создания объектов в ScrollBox'е   
    Лучше не наследоваться в отдельный класс от TThread, как это делалось раньше в Delphi.
    Это громоздкий и запутанный код. 
    Лучше используйте анонимные потоки. Вот вам шаблон:
     
    http://blog.marcocantu.com/blog/2014_may_background_delphi_android_threads.html
    TThread.CreateAnonymousThread(     procedure     begin  // выполняется в потоке       TThread.Queue(nil,         procedure         begin   /// выполняется в главном потоке, когда завершиться анонимный поток.         end);     end   ).Start; procedure TForm5.Button3Click(Sender: TObject); begin   TThread.CreateAnonymousThread(procedure ()   begin          // выполняется в потоке         TThread.Synchronize (TThread.CurrentThread,           procedure ()           begin  // выполняется в главном потоке, но при этом анонимный поток еще продолжит работать, но сейчас приостановлен           end);   end).Start; end;
    И помните что с элементами GUI нельзя работать из другого потока, только из главного ( TThread.Queue,  TThread.Synchronize). Иначе будет Access Violation, который будет выскакивать случайным образом.
  2. Like
    Ivan B. отреагировална krapotkin в Индикатор замирает во время создания объектов в ScrollBox'е   
    Это для совсем простеньких случаев, когда классу потока не нужны поля, методы и все такое. TTask.Run ничем не отличается от этого
    А для более продуманных вещей потомки TThread по-прежнему рулят
  3. Like
    Ivan B. отреагировална Alex7wrt в Индикатор замирает во время создания объектов в ScrollBox'е   
    Дело в том, что индикатор отрисовывается в основном потоке. По видимому ваша процедура также выполняется в основном потоке. Чтобы не было подтормаживаний, выполняйте фоновые операции в отдельном потоке, а при необходимости отрисовать какой-нибудь визуальный компонент, пользуйтесь Synchronize или Queue.
     
  4. Like
    Ivan B. отреагировална Alex7wrt в Индикатор замирает во время создания объектов в ScrollBox'е   
    По моему, все равно.  Как вам удобнее.
    Я так понимаю, что TTask разработаны с прицелом на параллельные вычисления, когда нужно выполнять однотипные операции в нескольких потоках. Для этого дела там имеются опции по ожиданию выполнения остальных потоков и т.д.
    TTask также удобен тем, что его можно сразу использовать, не нужно объявлять поток.
    TThread удобен, если нужно выполнить определенный набор действий по завершению потока (с помошью OnTerminate). Может и в TTask такое есть, не знаю
    Лично я просто привык использовать TThread 
  5. Like
    Ivan B. отреагировална krapotkin в Выполнение операции после скрытия меню   
    есть более интересный и по-мне, более правильный способ
    по нажатию в меню не сразу выполняете что-то, а ЗАПИСЫВАЕТЕ действие, которое ВЫПОЛНИТСЯ по событию закрытия мультивью
    тогда реакция наступает визуально правильная и дальше крутите колеса, запускайте потоки и все такое
×
×
  • Создать...