multithreading - 主线程繁忙时在 Delphi 中显示启动屏幕

标签 multithreading delphi delphi-2007 splash-screen

我想在加载应用程序时显示启动屏幕。然而,某些第三方组件在初始化期间会阻塞主线程几秒钟,这会导致所有表单无法更新。是否可以在启动屏幕上使用自己的线程,以便在主线程繁忙时它也会更新?

该应用程序是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/

相关文章:

c++ - 如何在 Delphi 中调试 DLL 文件

delphi - 如何替换备忘录 (FastReport) 中的字符串?

delphi - 如何同时安装 D2007 和 D2010?

delphi - 使用 Delphi 以编程方式获取 ODBC 数据源名称列表

python - 用 Popen 模仿 glib.spawn 异步...

java - 使用 AsynchronousSocketChannel 时出现 ReadPendingException

c++ - 两个线程之间的同步队列

delphi - .ini 文件 : DeleteKey leaves empty section

delphi - 如何将 800000 条记录插入 MS Access 表中?

python - 使用标准输出同时写入多行