Sto provando ad uccidere/cancellare un QThread. Ho seguito l'attuazione di https://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/Qt - come uccidere QThread
creo il QThread in questo modo:
workerThread = new QThread();
ImageProcessor* worker = new ImageProcessor();
worker->moveToThread(workerThread);
connect(workerThread, SIGNAL(started()), worker, SLOT(process()));
connect(worker, SIGNAL(finished()), workerThread, SLOT(quit()));
connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
connect(workerThread, SIGNAL(finished()), workerThread, SLOT(deleteLater()));
workerThread->start();
e cercare di fermarlo su un determinato evento UI chiamando:
workerThread->quit();
mio lavoratore si presenta così:
class ImageProcessor : public QObject
{
Q_OBJECT
public:
explicit ImageProcessor(QObject *parent = 0);
~ImageProcessor();
signals:
void finished();
public slots:
void process();
private:
//...
};
Dove processo chiama un'API con calcoli pesanti
void ImageProcessor::process()
{
// API call...
emit finished();
}
Il mio problema è, che dopo aver chiamato uscire sul filo, il filo continua a funzionare cioè i calcoli delle API non si fermano. Poiché il lavoratore chiama solo l'API, non posso lavorare con un controllo di annullamento nel ciclo di lavoro. Qualche idea?
Grazie in anticipo!
un'occhiata a questa risposta - http://stackoverflow.com/questions/14092915/qt-qthread-exclusively-for-object/14178944#14178944, può essere utile per voi –