event in einem thread empfangen



  • hi,

    ich habe folgendes problem...

    eine dll benötigt daten. um diese zu bekommen wird diese ständig gepollt, bzw wird mit waitforsingleobject gewartet.

    eine andere dll ist als COM-client erstellt. d.h. sie hat die funktionen connect, disconnect und ondaten. diese dll ist in die erste statisch gelinkt und wird von der mit den funktionen connect und disconnect aufgerufen.

    mein problem .. die events vom com-server werden nicht empfangen, da ja der prozess immer eine andere aktion ausführt und ich denke mal, dass bei waitforsingleobject auch keine events empfangen werden können.
    stecke ich den com-client (also die 2. dll) in eine exe anwendung, werden auch ganz normal die events empfangen. -> also am code liegt es net.

    wollte jetzt einen neuen thread öffnen, damit die events in der dll empfangen werden können. jedoch kann ich ja nur eine funktion im neuen thread öffnen und kann net sagen, dass in dem neuen thread auf das com-event gewartet werden soll.

    kann mir da jemand weiterhelfen? wie entkoppel ich den client, so dass die events empfangen werden können?

    gruß
    pitrie



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hat da niemand eine idee? brauche da dringend hilfe ...

    hier mal ein kleines bild, falls meine beschreibung etwas unverständlich war!

    http://autoexport.sunbird-kalender.de/pic.png

    gruß
    pitrie



  • Mit COM-Events kenne ich mich gar nicht aus, aber vielleicht kannst du mit WaitForMultipleObjects das machen, was du vorhast (gleichzeitig auf vers. Events warten - oder habe ich dich falsch verstanden?)



  • ne ... mein problem ist, dass ich das event vom com-objekt garnicht empfangen kann, da beide dlls im gleichen prozess bzw. thread laufen.

    und ne seperate exe möchte ich net aus der 2. dll machen, wo das event vom com server übrigens dann emfangen wird

    gruß
    pitrie



  • Du könntest ein multi threaded apartment verwenden. Dann kannst du dir aber active x controls abschminken, die machen damit probleme. Oder eben einen out of process server verwenden.

    Lies dir mal diverse Artikel in der MSDN zum Thema COM und threading und apartment models durch -- ist da eigentlich alles beschrieben. Events & in-process-server & single threaded apartment = Probleme 😉



  • tatsächlich!

    es lag nur an dem COINIT_MULTITHREADED 🙂

    meins war nur COINIT_APARTMENTTHREADED

    super .. ich danke dir!!!


Anmelden zum Antworten