我想在加载应用程序时显示启动屏幕。然而,某些第三方组件在初始化期间会阻塞主线程几秒钟,这会导致所有表单无法更新。是否可以在启动屏幕上使用自己的线程,以便在主线程繁忙时它也会更新?
该应用程序是win32和Delphi版本2007。
编辑:我试图避免“未绘制的启动屏幕”效果,如果其他一些窗口(来自其他应用程序)位于启动屏幕的顶部,例如通过 alt-tab 键切换到另一个应用程序并返回,就会发生这种情况。
最佳答案
您可以在另一个线程中运行启动屏幕,但随后您将需要使用原始 Windows API 调用或实现类似 VCL 的类的第三方库(如 Key Objects Library )。但是不要从启动线程访问 VCL 内容。
如果您走这条路(我认为您不应该这样做,因为这是大量工作却收效甚微),请务必遵守有关从多线程访问 Windows API 的规则。例如,Google 搜索“用户界面线程”以获取更多信息。
编辑:
我之前没有意识到,但实际上有一个组件实现了 Threaded Splashscreen for Delphi在 CodeCentral 上。使用此组件(尚未尝试过)实际上可能很容易在不同的线程中显示启动屏幕,但针对从辅助线程访问 VCL 的警告仍然存在。
关于multithreading - 主线程繁忙时在 Delphi 中显示启动屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388506/