gpt4 book ai didi

c++ - Qt编程——QtConcurrence kill线程

转载 作者:行者123 更新时间:2023-11-28 07:05:07 28 4
gpt4 key购买 nike

我使用 QtConcurrence 在单独的线程中运行一个函数,但我想停止、暂停或终止该线程,但我做不到。我读了这个:

Note that the QFuture returned by QtConcurrent::run() does not support canceling, pausing, or progress reporting. The QFuture returned can only be used to query for the running/finished status and the return value of the function.

我可以用任何其他方式做到这一点吗?

我的职能是:

void MainWindow::on_imprimirButton_clicked()
{
if(filename.length() == 0){
ui->consolaBrowser->append("Error. Debe seleccionar un fichero.");
}else if(!filename.contains(".txt")){
ui->consolaBrowser->append("Fichero erroneo. Debe seleccionar un archivo de tipo G-CODE.");
}else{

imprimiendo=1;

*future= QtConcurrent::run(Imprimir,filename.toUtf8().data());

imprimiendo=0;
}
}

最佳答案

我认为 QtConcurrence 解决方案不是很好。它经常被建议,但与使用线程库(例如 QThread)的良好实现相比没有优势。下面的示例显示了一种停止线程的可能性。如果您在主程序的某处设置变量 m_bBreak true,则线程停止。您也可以通过类似的方式获取当前线程的进度。

int foo(bool* bStopper) {
if(*bStopper)
return 0;

// Do code here

return 1;
}

void QThread::run() {
m_iErrors = foo(&m_bBreak);
// Handle errors
}

关于c++ - Qt编程——QtConcurrence kill线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21878744/

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