Seite 1 von 1

Asynchron zu Synchron machen...

Verfasst: 16. November 2013 16:19
von chrislo1976
Hallo zusammen!


Ich habe eine asynchrone Klasse die mehrere Schritte anhand Signal-Slot-Verbindungen ausführt.
Von einer anderen Klasse aus würde ich gern einen blockierenden Aufruf (wie z.B. waitForFinished) machen, um danach sicher zu sein dass die asynchrone Klasse zu diesem Zeitpunkt auch wirklich fertig ist.

Ich weiß von 2 Möglichkeiten:
Entweder mit einer lokalen QEventLoop oder einer Endlosschleife/processEvents() arbeiten.

Weiß evtl. noch jemand andere Möglichkeiten, oder kann mir zu einer der beiden Möglichkeiten raten bzw. auch davon abraten?

Danke schon mal für Infos!


Gruß
Christian

Re: Asynchron zu Synchron machen...

Verfasst: 16. November 2013 17:38
von dazedly
Also die Eventloop ist nach meinem Wissen die Beste Möglichkeit für solche Dinge .:) Nutzen wir auch mehrfach.

Re: Asynchron zu Synchron machen...

Verfasst: 19. November 2013 07:06
von chrislo1976
Hallo!

Du würdest also daran:

Code: Alles auswählen

// create a local event loop
// stops, if request was finished
QEventLoop ev;
connect(this, SIGNAL(finished()), &ev, SLOT(quit()));

// trigger sending of sms and wait for finished
send();
ev.exec();
nichts "verwerfliches" finden?!

Gruß
Christian

Re: Asynchron zu Synchron machen...

Verfasst: 19. November 2013 08:38
von dazedly
Wüsste nicht, was daran verwerflich sein sollte :)