Hallo,
Vielleicht könnt ihr mir bei folgenden Problem weiterhelfen:
Ich hab ein Objekt, welches zu einem Dispatcher Thread zugeordnet ist (QObject::moveToThread(Dispatcher)), und möchte diesem jetzt ein Event schicken, welches aber asynchron abgearbeitet werden soll. Laut Qt Doku macht man das mit QtCoreApplication::postEvent.
Beim Testen sende ich dann ein Event aus dem GUI Thread, das Event wird aber nicht wie erwartet im Dispatcher Thread ausgeführt, sondern im GUI Thread. Die Qt Doku ist dahingehenden auch nicht besonders gut, für mich ist das ein Standard Anwendungsfall, und ich hab in der Doku nichts konkretes über einen solchen Problemfall gelesen. Sie schreiben nur "Adds the event event, ..., to an event queue ...", wenn ich das schon lese, "to an event queue", mich würd halt interessieren zu welcher?
Dankeschön!
QCoreApplication::postEvent in Multithreading Umgebungen
Hab's selber noch nicht ausprobiert, aber normal würde ich annehmen zu der Event Queue die für das Objekt zuständig ist. Wenn also das Objekt wirklich in einem eigenen Thread mit existierender Qt Queue ( exec() aufgerufen? ) steckt, dann sollte der Event auch dort abgearbeitet werden.
Ist dein Dispatcher von QThread abgeleitet und hast du dort exec() aufgerufen?
Ist dein Dispatcher von QThread abgeleitet und hast du dort exec() aufgerufen?
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
hab in der doku unter thread support folgendes gefunden:
also erzeugt wurde mein objekt im gui thread, und danach dem dispatcher zugeordnet, würde also erklären, wieso events an den gui thread gesendet werden. nur frag ich mich, ob das auch so sein soll?You can manually post events to any object in any thread at any time using the thread-safe function QCoreApplication::postEvent(). The events will automatically be dispatched by the event loop of the thread where the object was created.