hallo,
ich habe einen converter mit GUI geschrieben. während des konvertierungsvorgangs wird ein weiterer thread gestartet der die berechnungen durchführt und somit die GUI nicht blockiert wird. jetzt kann es aber vorkommen das der user den konvertierungsvorgang abbrechen möchte. QThread::wait() blockiert die GUI und QThread::terminate() soll man ja nicht benutzen. was wäre eine vernüftige alternative um einen thread abzubrechen und dennoch die GUI nicht zu blockieren ?
kann man auch ne pause-fkt einbauen ?
QThread blockiert GUI bei abbruch
Re: QThread blockiert GUI bei abbruch
Das kommt auf deine Implementierung an. In der Regel setzt man sich ein Flag und fragt das in der Run-Loop ab. Eine Stop-Funktion setzt dieses Flag dann, so dass der Thread die Run-loop verlässt.marvel hat geschrieben:hallo,
ich habe einen converter mit GUI geschrieben. während des konvertierungsvorgangs wird ein weiterer thread gestartet der die berechnungen durchführt und somit die GUI nicht blockiert wird. jetzt kann es aber vorkommen das der user den konvertierungsvorgang abbrechen möchte. QThread::wait() blockiert die GUI und QThread::terminate() soll man ja nicht benutzen. was wäre eine vernüftige alternative um einen thread abzubrechen und dennoch die GUI nicht zu blockieren ?
kann man auch ne pause-fkt einbauen ?
in der run() funktion werden zwei funktionen aus einer klasse aufgerufen.
ich habe das ganze nun so gelöst das wenn ich den cancel button drücke das die startParser() funktion false zurückgibt und dann einfach returned wird. ich denke darauf wolltest du hinaus.
Code: Alles auswählen
Converter_Thread::Converter_Thread(Converter *con) : QThread()
{
converter = con;
}
Converter_Thread::~Converter_Thread()
{
}
void Converter_Thread::run()
{
stop = converter->startParser();
if(!stop)
{
return;
}
converter->startConverter();
}