【发布时间】:2016-06-13 19:51:15
【问题描述】:
我也有这样的情况:stop thread started by qtconcurrent::run
我需要在 QMainWindow 的 closeEvent 上关闭子线程(从 QtConcurrent::run 开始)。 但是我在子线程中的函数使用来自 *.dll 的代码:我不能使用循环,因为我所做的只是调用 external dll 之类的
QFuture<void> = QtConcurrent::run(obj->useDllfunc_with_longTermJob());
当我使用 x 按钮关闭应用程序时,我的 gui 已关闭,但带有 _longTermJob() 的第二个线程仍然有效,完成时出现错误。 我知道一些决定:
- 使用其他函数,如 map() 或其他 QFuture.cancel/stop 功能,而不是 QtConcurrent::run()。但我只需要一个函数调用。 run() 是我需要的。
- 或使用 QThread 代替 Concurrent。但这对我不利。
什么方法更简单更好,我该如何实现?有没有我没有列出的方法? 您能否提供小代码示例以供决策。谢谢!
【问题讨论】:
标签: multithreading qt concurrency qmainwindow