gpt4 book ai didi

c++ - 如何卸载高度依赖于正确异常处理的计算繁重的任务?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:18 24 4
gpt4 key购买 nike

在我的 Qt 应用程序中,我必须执行一些计算量大的任务,通常是从磁盘加载巨大的数据集(单线程)。任务中的代码严重依赖于正确的异常处理,并且严格来说是非 Qt 的。我使用 QtConcurrent::run() 从 GUI 线程卸载这些任务,以便我可以显示进度条。然而,正如我从 Qt 文档中了解到的那样,我无法在 GUI 线程中捕获异常。我知道从理论上讲这是没有意义的。但是,在实践中,由于进度条,我只使用线程。处理这种情况的最佳方法是什么?

编辑:我想强调的是,我不需要对卸载的工作进行细粒度控制。我真的只卸载它来显示进度条。这可能是其他人也遇到过的情况。

最佳答案

您可以将整个函数包装到一个 try/catch 中。当捕获到异常时,您可以使用自定义信号通知 GUI 线程。

您也可以在 GUI 线程中运行您的函数并定期调用 QApplication::processEvents() 来更新 UI(进度条等)。

关于c++ - 如何卸载高度依赖于正确异常处理的计算繁重的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com