如何在 运行 线程中立即取消 QSqldatabase::open?
How to cancel QSqldatabase::open immediately in a running thread?
我有一个线程,它打开一个数据库并发出一个信号。主要思想是检查数据库是否仍然存在并且有效。如果数据库处于脱机状态 (MYSQL),QSqldatabase 将尝试连接大约 3 秒。
现在的问题是:如果我想关闭线程(因为 UI Window 已关闭)并且无法访问数据库,我需要等到连接测试完成完成,然后我可以关闭我的线程,然后 UI.
因此 UI 可以冻结,因为它正在等待线程关闭,该线程正忙于测试连接。
是否可以立即中止线程? (我正在使用 Qt Concurrent::run)。
经过多年的经验,我确实知道了一个答案:你根本不应该这样做。让它打开或终止,但最好的选择是让它 运行、完成然后关闭线程。
我设法保持线程 运行ning 直到测试完成。 UI 可以随时关闭 - 如果忙,数据库线程会跟随。
我有一个线程,它打开一个数据库并发出一个信号。主要思想是检查数据库是否仍然存在并且有效。如果数据库处于脱机状态 (MYSQL),QSqldatabase 将尝试连接大约 3 秒。
现在的问题是:如果我想关闭线程(因为 UI Window 已关闭)并且无法访问数据库,我需要等到连接测试完成完成,然后我可以关闭我的线程,然后 UI.
因此 UI 可以冻结,因为它正在等待线程关闭,该线程正忙于测试连接。
是否可以立即中止线程? (我正在使用 Qt Concurrent::run)。
经过多年的经验,我确实知道了一个答案:你根本不应该这样做。让它打开或终止,但最好的选择是让它 运行、完成然后关闭线程。
我设法保持线程 运行ning 直到测试完成。 UI 可以随时关闭 - 如果忙,数据库线程会跟随。