我有一个Inno安装程序安装执行一些耗时的'AfterInstall'操作.执行此操作时,安装GUI完全冻结(似乎未处理主事件循环).这不是一个愉快的最终用户体验,所以也许这种操作可能不会冻结GUI?喜欢在单独的线程中执行它还是定期调用类似的东西handleGuiEventLoop()?
该输出进度页面被设计用于在长时间运行操作提供反馈.
但为了使其有效,您必须能够通过定期调用此页面上的方法来保持Inno更新您当前的进度.
有一个库可以让你传递Inno脚本函数作为DLL的回调,这可能是有用的.您可能还想查看使用同一站点的ITDownload脚本,这样您就可以从Inno本身进行HTTP访问,避开中间人.
然而,Inno本质上是单线程和GUI线程仿射,因此直接调用阻塞操作将始终阻止UI而无需特殊规定.可以在单独的线程中运行代码(但只能在DLL中,并且必须非常小心); 其他选项包括仅进行异步调用,或者内部维护GUI更新的调用,例如Exec.
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |