Thread abbrechen

Alles rund um die Programmierung mit Qt
Antworten
mehlior
Beiträge: 5
Registriert: 12. September 2008 22:14

Thread abbrechen

Beitrag 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
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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?
Antworten