c++ - 相当于 Cocoa 中的 wxYield
问题描述
我是 MacOS 编程的新手。我正在使用带有 XIB 接口的 Objective-C 来开发 Mac 应用程序。
我正在制作一个压缩和解压缩文件/文件夹的应用程序。我还实现了一个进度条来显示任务的进度。
但是,当用户放下一个大文件来压缩应用程序时,应用程序冻结,进度窗口永远不会显示,但日志工作正常。
我记得当我使用 wxWidgets 时,在这种情况下,我必须使用它wxYield()
来处理事件并更新 ui,一切都会好起来的。
那么,在 Cocoa 上做这件事的方法是什么?
解决方案
我使用@Willeke 的建议进行了工作。
我正在zip_close
另一个线程上执行该函数,让主线程处理 UI 更新和事件。
此外,当发出进度回调时,我正在通过访问主线程来更新 UI(从另一个线程更改 UI 会发出警告)。
感谢@Igor 和@Willeke 的帮助!
推荐阅读
- angular - Angular 2+:组件样式不断影响其他组件
- sharepoint-online - 如何使用 CSOM 关键字查询在 SharePoint Online 中设置用户配置文件属性过滤器
- r - 使用 mapply 时参数不一致
- azure - 发布后,我的 Azure 应用服务在加载时显示“您的应用服务应用已启动并正在运行”,如何删除?
- ansible - 使用 zip 命令时没有这样的文件或目录
- android - 使用 rxjava 对 android 应用程序进行单元测试
- google-bigquery - Getting error while inserting array of json to bigQuery
- python - 如何从熊猫数据框中的列值中删除连续的四位数字
- python - 使用 cx_freez 构建 exe 时出错
- repository - 外部服务 (API) 是否符合存储库的 DDD 定义?