我的应用程序上有两个选项卡。它们都有一个表格——一张用于输入,一张用于输出。当输出表的选项卡被激活时,会触发一个分析数据并填充输出网格的过程。
输出网格需要几秒钟来渲染,我想显示一些动画图标。我尝试了带有 TFloat 动画的 TImage 以及 TAniIndicator。在分析过程运行时,它们似乎都冻结了。
我的应用程序上有两个选项卡。它们都有一个表格——一张用于输入,一张用于输出。当输出表的选项卡被激活时,会触发一个分析数据并填充输出网格的过程。
输出网格需要几秒钟来渲染,我想显示一些动画图标。我尝试了带有 TFloat 动画的 TImage 以及 TAniIndicator。在分析过程运行时,它们似乎都冻结了。
听起来你有单线程应用程序。问题是一个线程一次只能执行一项“任务”。
在单线程应用程序的情况下,主线程负责几件事:
因此,当您执行 Analyze() 函数时,主线程被阻塞,因此无法刷新 UI。作为副作用动画似乎冻结。
我建议在单独的线程中移动长时间运行的任务。任务完成后,主线程发出信号停止指示器并继续接收用户输入。这样主 IU 线程将不会被阻塞,并且 TAniIndicator 将正常运行。
注意:注意线程同步和线程安全!VCL/FMX 组件不是线程安全的。您可以在这里找到有用的信息: