2

当我打开一个大型查询时,我希望使用新的西雅图 TActivityIndi​​cator 但这会阻塞主 vcl 线程并因此停止 TActivityIndi​​cator。

当然 TActivityIndi​​cator 指示活动并且应该在不同的线程中工作。

无需在任何地方都放入 Application.Processmessages 是否有另一种方法?

4

2 回答 2

3

新的 VCL UI 活动指示器是一个进度指示器,旨在反映 Windows 10 的外观。它与任何其他 VCL 控件一样,受通常的 VCL 线程规则的约束。对控件的所有访问都必须来自 UI 线程。

因此,您需要从 UI 线程创建并显示指示器。您需要确保 UI 线程从未被阻塞。这意味着必须将任何长时间运行的任务发送到工作线程,以免它们阻塞 UI 线程。

加上ça change,加上 c'est la meme 选择。

于 2015-11-08T23:04:47.010 回答
2

UI 只能从主线程更新。活动指示器也必须遵守该规则。而是将您的活动放在不同的线程中。然后您的应用程序将保持响应。

于 2015-11-08T22:44:27.647 回答