【发布时间】:2020-02-10 22:09:17
【问题描述】:
我有一个线程,它打开一个数据库并发出一个信号。主要思想是检查数据库是否仍然存在并且有效。如果数据库处于离线状态(MYSQL),QSqldatabase 正在尝试连接大约 3 秒。
现在的问题:如果我想关闭线程(因为 UI 窗口已关闭)并且无法访问数据库,我需要等到连接测试完成,然后才能关闭我的线程,然后用户界面。
所以 UI 可以冻结,因为它正在等待线程关闭,而该线程正忙于测试连接。
是否有可能立即中止线程? (我正在使用 Qt Concurrent::run)。
【问题讨论】:
-
您可以强制线程立即终止:
QThread::terminate() -
首先,感谢您的评论 :) 看起来这是我正在寻找的一种方法。 Qt Concurrent有没有类似的方法?我更喜欢并发,因为它更容易。 (我不会犯那么多错误)。
标签: qt5 qthread qtconcurrent qsqldatabase