当我打开一个大型查询时,我希望使用新的西雅图 TActivityIndicator 但这会阻塞主 vcl 线程并因此停止 TActivityIndicator。
当然 TActivityIndicator 指示活动并且应该在不同的线程中工作。
无需在任何地方都放入 Application.Processmessages 是否有另一种方法?
当我打开一个大型查询时,我希望使用新的西雅图 TActivityIndicator 但这会阻塞主 vcl 线程并因此停止 TActivityIndicator。
当然 TActivityIndicator 指示活动并且应该在不同的线程中工作。
无需在任何地方都放入 Application.Processmessages 是否有另一种方法?
新的 VCL UI 活动指示器是一个进度指示器,旨在反映 Windows 10 的外观。它与任何其他 VCL 控件一样,受通常的 VCL 线程规则的约束。对控件的所有访问都必须来自 UI 线程。
因此,您需要从 UI 线程创建并显示指示器。您需要确保 UI 线程从未被阻塞。这意味着必须将任何长时间运行的任务发送到工作线程,以免它们阻塞 UI 线程。
加上ça change,加上 c'est la meme 选择。
UI 只能从主线程更新。活动指示器也必须遵守该规则。而是将您的活动放在不同的线程中。然后您的应用程序将保持响应。