Datenabfrage in separaten QThread
Verfasst: 12. Januar 2011 10:40
Hallo zusammen!
Ich bin momentan dabei die Verwendung von Threads zu testen.
Mein Ziel ist es hauptsächlich, das Auslesen von Daten aus einer Datenbank in einen separaten Thread auszulagern, damit die GUI dabei nicht einfriert.
Zusätzlich möchte ich dem Benutzer während dem Auslesen eine Rückmeldung geben wieviel Daten schon gelesen wurden und (optimalerweise) die bereits gelesenen Daten schon anzeigen.
Ich habe mir ein kleines Testprojekt erstellt in dem ich diese Funktionalität testen kann. Statt einer Datenbank ist einfach eine Schleife enthalten, die Dummy-Daten erstellt. Diese Dummydaten werden in eine QStringList eingefügt und diese Liste wird regelmäßig zum Hauptthread geschickt und dort in einer einzigen Liste zusammengefügt.
Prinzipiell funktioniert das auch so wie ich es will, allerdings dauert es nach einem Auslesevorgang recht lange bis ein neuer Auslesevorgang gestartet werden kann, oder auch wenn das Programm beendet werden soll. Ich vermute dass das mit dem "Aufräumen" der QStrings durch Qt zusammenhängt.
Hat jemanden einen Tipp für mich um das zu verbessern, oder allgemein ein paar Hinweise ob diese Herangehensweise sinnvoll ist oder etwaige Gefahren birgt?!
Danke schon mal!
Gruß,
Christian
Ich bin momentan dabei die Verwendung von Threads zu testen.
Mein Ziel ist es hauptsächlich, das Auslesen von Daten aus einer Datenbank in einen separaten Thread auszulagern, damit die GUI dabei nicht einfriert.
Zusätzlich möchte ich dem Benutzer während dem Auslesen eine Rückmeldung geben wieviel Daten schon gelesen wurden und (optimalerweise) die bereits gelesenen Daten schon anzeigen.
Ich habe mir ein kleines Testprojekt erstellt in dem ich diese Funktionalität testen kann. Statt einer Datenbank ist einfach eine Schleife enthalten, die Dummy-Daten erstellt. Diese Dummydaten werden in eine QStringList eingefügt und diese Liste wird regelmäßig zum Hauptthread geschickt und dort in einer einzigen Liste zusammengefügt.
Prinzipiell funktioniert das auch so wie ich es will, allerdings dauert es nach einem Auslesevorgang recht lange bis ein neuer Auslesevorgang gestartet werden kann, oder auch wenn das Programm beendet werden soll. Ich vermute dass das mit dem "Aufräumen" der QStrings durch Qt zusammenhängt.
Hat jemanden einen Tipp für mich um das zu verbessern, oder allgemein ein paar Hinweise ob diese Herangehensweise sinnvoll ist oder etwaige Gefahren birgt?!
Danke schon mal!
Gruß,
Christian