Qthread und exec()
Verfasst: 8. Juli 2010 15:06
Hallo Forenmitglieder,
bisher habe ich Threads benutzt und nur die run()-Funktion überladen. Nun brauche ich aber mehrere Funktionen, die in dem gleichen Thread laufen sollen. Dazu habe ich die run()-Funktion wie folgt geschrieben:
Dann habe ich folgende zwei Test-Funktionen erstellt:
Wenn ich nun den Thread aus meiner Mainklasse (inklusive GUI) mit
starte und danach dann aufrufe, dann hängt meine GUI. Demnach läuft die Funktion ebenfalls auf der Mainklasse, wenn ich das richtig interpretiere.
Nachdem das nicht geklappt hatte, habe ich ein Signal emittiert, dass die FunctionOne() als Slot aufruft. Ebenfalls ohne Erfolg.
In dem Konstruktor des DataThread habe ich auch einmal testweise eingegeben; mit dem gleichen Resultat.
Irgendwas scheine ich grundlegend falsch zu verstehen und deshalb bitte ich um Rat: Wie rufe ich eine Funktion auf, die in einem separaten Thread läuft.
Vielen Dank schonmal,
Johannes
bisher habe ich Threads benutzt und nur die run()-Funktion überladen. Nun brauche ich aber mehrere Funktionen, die in dem gleichen Thread laufen sollen. Dazu habe ich die run()-Funktion wie folgt geschrieben:
Code: Alles auswählen
void DataThread::run(void)
{
exec();
}Code: Alles auswählen
void DataThread::FunctionOne(void)
{
sleep(5000);
}
void DataThread::FunctionTwo(void)
{
sleep(5000);
}Code: Alles auswählen
m_pDataThread->start()Code: Alles auswählen
m_pDataThread->FunctionOne()Nachdem das nicht geklappt hatte, habe ich ein Signal emittiert, dass die FunctionOne() als Slot aufruft. Ebenfalls ohne Erfolg.
In dem Konstruktor des DataThread habe ich auch einmal testweise
Code: Alles auswählen
this->moveToThread(this);Irgendwas scheine ich grundlegend falsch zu verstehen und deshalb bitte ich um Rat: Wie rufe ich eine Funktion auf, die in einem separaten Thread läuft.
Vielen Dank schonmal,
Johannes