Seite 1 von 1

Thread abbrechen

Verfasst: 13. September 2008 13:29
von mehlior
Hallo,

ich habe eine QThread-Klasse, die auch ohne Probleme läuft. Die Oberfläche bleibt dabei klickbar und enthält eigentlich nur einen Button zum Abbrechen des Threads und nach dem Abbruch soll noch eine Funktion aufgerufen werden, die "Abbruch durch Benutzer" ausgibt. Die entsprechenden Verbindungen mache ich wie folgt:

Code: Alles auswählen

   	 
connect(ui.exitButton, SIGNAL(clicked()), &thread, SLOT(terminate()));		   	           
     connect(&thread, SIGNAL(terminated()), this, SLOT(resultsTerminated()));      	 
Im run() des Threads wird nur eine etwas umfangreichere Funktion aufgerufen. Wenn ich jetzt auf den Abbrechen-Button klicke, so läuft die Funktion trotzdem bis zum Ende durch (wird also nicht abgebrochen) und dann (obwohl ja dann das Ergebnis da wäre) wird resultsTerminated aufgerufen.

Wie kann ich es hinbekommen, dass der Thread direkt abgebrochen wird?

Vielen Dank
Christian

Verfasst: 16. September 2008 21:20
von Chris81T
Ich hab ma gerad in die Doku zu dem Thema geschaut:
The thread may or may not be terminated immediately, depending on the operating systems scheduling policies.
Das könnte ich mir vorstellen, dass dadurch auch das Signal des Buttons nicht direkt "durchkommt". Ob's stimmt, weis ich net, aber tippe auf sowas.

Da es sich um nicht viel Code anhört, kannste event. ma posten.

Verfasst: 17. September 2008 09:06
von upsala
Sorg lieber dafür daß dein Thread kontrolliert beendet wird, bevor du solche Funktionen wie terminate() verwendest. Oder beendest du alle deine Programme mit sigkill?