Thread Kontext für connect/emit
Verfasst: 3. Juni 2014 22:25
Hallo,
ich bin neu hier im Forum und habe ein Frage zu connect und emit.
Folgendes Problem:
Ich habe mir eine Logger Klasse geschrieben, die Log Infos unter anderem auch in ein Text Fenster posten kann. Wenn dieses Text Fenster angelegt wird, wird auch ein connect durchgeführt, um die Textstring an die Fensterklasse zu übertragen. Das sieht dann z.B. so aus:
Das absetzen einer Log Message sieht dann so aus:
Das funktioniert soweit auch, allerdings nur wenn das emit aus dem gleichen Thread Kontext aufgerufen wird, in dem auch das connect gemacht wurde. (dem GUI Thread). Wird das emit (bzw. meine Write Funktion) aus einem anderen Thread Kontext aufgerufen, kommt das Signal nicht an.
Hat jemand vielleicht eine Idee, wie ich das Problem lösen kann?
Vielen Dank im vorraus!
ich bin neu hier im Forum und habe ein Frage zu connect und emit.
Folgendes Problem:
Ich habe mir eine Logger Klasse geschrieben, die Log Infos unter anderem auch in ein Text Fenster posten kann. Wenn dieses Text Fenster angelegt wird, wird auch ein connect durchgeführt, um die Textstring an die Fensterklasse zu übertragen. Das sieht dann z.B. so aus:
Code: Alles auswählen
connect(this, &QMyLog::NotifyLogWindowAddText_SI, m_pLogWindow, &CMyWindowUI::OnAddText_SL);Code: Alles auswählen
void QMyLog::Write(const QString& message)
m_Mutex.tryLock();
QString qsOut = CreateMessage(message);
// ...
if(m_bUseLogWindowDestination)
{
emit NotifyLogWindowAddText_SI(qsOut);
}
m_Mutex.unlock();
}
Hat jemand vielleicht eine Idee, wie ich das Problem lösen kann?
Vielen Dank im vorraus!