作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的 Qt 应用程序中,我必须执行一些计算量大的任务,通常是从磁盘加载巨大的数据集(单线程)。任务中的代码严重依赖于正确的异常处理,并且严格来说是非 Qt 的。我使用 QtConcurrent::run()
从 GUI 线程卸载这些任务,以便我可以显示进度条。然而,正如我从 Qt 文档中了解到的那样,我无法在 GUI 线程中捕获异常。我知道从理论上讲这是没有意义的。但是,在实践中,由于进度条,我只使用线程。处理这种情况的最佳方法是什么?
编辑:我想强调的是,我不需要对卸载的工作进行细粒度控制。我真的只卸载它来显示进度条。这可能是其他人也遇到过的情况。
最佳答案
您可以将整个函数包装到一个 try/catch 中。当捕获到异常时,您可以使用自定义信号通知 GUI 线程。
您也可以在 GUI 线程中运行您的函数并定期调用 QApplication::processEvents()
来更新 UI(进度条等)。
关于c++ - 如何卸载高度依赖于正确异常处理的计算繁重的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330878/
我是一名优秀的程序员,十分优秀!