私は問題があります。Abort()を呼び出すと、complexMathインスタンスにクリーンアップを行うのに十分な時間がなくても、run関数が返されます。
私が欲しいのは、Abort()を呼び出した後、complexMathインスタンスがそれ自体をシャットダウンするのに十分な時間があることです。これにより、保留中のすべての信号とスロット(complexMath内では、独自の信号とスロットもあります)がクリアされてから戻ります。
void MyThread::Go(){
start();
}
void MyThread::Abort(){
emit stopNow();
quit();
}
void MyThread::run(){
ComplexMath * complexMath = new ComplexMath();
connect( complexMath, SIGNAL(OnCalculation(qint)), this, SLOTS(PartialOutput(qint)) );
connect( this, SIGNAL(stopNow()), complexMath, SLOTS(deleteLater());
exec();
}
void MyThread::PartialOutput(qint data){
qDebug() << data;
}
ありがとう!