0

我的应用程序上有两个选项卡。它们都有一个表格——一张用于输入,一张用于输出。当输出表的选项卡被激活时,会触发一个分析数据并填充输出网格的过程。

输出网格需要几秒钟来渲染,我想显示一些动画图标。我尝试了带有 TFloat 动画的 TImage 以及 TAniIndicator。在分析过程运行时,它们似乎都冻结了。

4

1 回答 1

1

听起来你有单线程应用程序。问题是一个线程一次只能执行一项“任务”。

在单线程应用程序的情况下,主线程负责几件事:

  • 处理 UI 内容(刷新、绘图等)
  • 执行您的代码,即对控件的事件做出反应,例如 TabXActivate()
  • 等等

因此,当您执行 Analyze() 函数时,主线程被阻塞,因此无法刷新 UI。作为副作用动画似乎冻结。

我建议在单独的线程中移动长时间运行的任务。任务完成后,主线程发出信号停止指示器并继续接收用户输入。这样主 IU 线程将不会被阻塞,并且 TAniIndicator 将正常运行。

注意:注意线程同步和线程安全!VCL/FMX 组件不是线程安全的。您可以在这里找到有用的信息:

于 2013-09-22T18:09:14.597 回答