It might not apply to your job, but...
if you need to break off your job (stopping the thread in the middle of it's work) you can use a 'bool keepRunning' member variable in the threaded function.
run(){
keepRunning = true;
do{
//whatever - some short job
}while(someCondition&&keepRunning);
Then sub-class quit to look like
void AutomationThread::quit()
{
keepRunning = false;
QThread::quit();
}
Then you can stop the thread with
myThread->quit();
myThread->wait();//this will wait a maximum of one loop iteration.
Not always applicable, but I use that method all the time - my threads can run for hours (monitoring things, waiting)
by the way, a long sleep in my thread then looks like
for(int i=0; i<someLargeWait&&keepRunning; ++i){
msleep(100);
}
which can also be broken off quickly.
K
Bookmarks