MFC und Threads wegen CORBA
-
Hi,
eine kleine Spezialfrage - vielleicht gibt es ja hier jemanden, der Ahnung von MFC und Corba hat und der mir helfen kann.
Also, ich will einen kleinen CORBA-HelloWorld-Server mit GUI schreiben (naja, eigentlich soll er später auch als client fungieren, dass ist aber nicht so wichtig). Wer schon mal was mit CORBA gemacht hat, weiß, dass der mainthread nach dem Aufruf von orb.run() blockiert, sodass eben auch die GUI nicht mehr reagiert!!!! (das hab ich ausprobiert!)
Meine Idee war dann, einen Thread zu starten, in dem die Corba-initialisierung inklusive orb.run() vorgenommen wird. Das funktioniert aber irgendwie nicht - er läuft zwar in den Thread, der ORB published noch seine Referenz und auch die GUI reagiert jetzt, aber der ORB hört schlichtweg nicht, wenn ein Client ihn ruft....
==>weiß jemand, woran das liegen könnte oder hat jemand ne Idee wie man einen CORBA-Server mit GUI baut???
!!!Ich habe in den OMG spezifikationen gelesen, dass orb.run() immer im mainthread ausgeführt werden muß!!! Aber der MainThread in einer MFC-Application ist doch immer der Benutzeroberflächenthread von CWinApp...ich vermute mal, dass in den Tiefen von Windows eine Instanz von CWinApp als Thread gestartet wird, sodass dass Prgramm dann startet....
Könnte es gelingen, den Spiess umzudrehen?? Könnte man vielleicht anstelle von CWinApp einen anderen Thread starten, der den ORB initialisiert und dann CWinApp als Thread startet??
Mit anderen Worten, man müßte es schaffen, dass der ORB initialisiert ist, bevor das ganze MFC-Zeugs losgeht....hat jemand noch ne Idee??...BESTEN DANK
-
Du könntest dein orb.run() im Hautthrad starten, wenn Du zuvor einen Thread für die Visualisierung startest, MS beschreibt das als 'Erstellen von Benutzeroberflächen-Threads' in der MSDN. Das müßte dann auch dein Problem lösen, denke ich mal.
Gruß