我正在尝试在我的 QT 应用程序中实现超时。我使用 QThread 执行操作(需要超时的任务)并使用 QElapsedTimer 计算等待执行操作的经过时间。下面是代码片段
QElapsedTimer timeoutTimer; // Timer to count the elapsed time waiting for the operation to complete.
long timeoutInterval=10000
MyThread mThread(); // QThread implementation
timeoutTimer.start();
mThread.start();
while((timeoutTimer.elapsed() < timeoutInterval) && mThread.isRunning()){
sleep(5);
}
if(mThread.isRunning()){
mThread.terminate();
}
现在,如果任务没有完成并且发生超时,我会得到“在线程仍在运行时被销毁”并且应用程序会崩溃。我试图调用 QThread 的 terminate() 函数,但它在 Windows 上运行,但在 Linux 上出现分段错误。