Hallo,
ich bin gerade dabei einen Corba-Server schreiben der Methoden bereit stellt, welche wiederrum dann auf einen Com-Serve zugreifen. Ich habe nur das Problem das die bereitgestellten Methoden vom Client mit unterschiedlichen Threads aufgerufen werden und ich dann nicht auf das selbe Com-Objekt zugreifen kann. Ich erhalte dann immer eine Exception.
Also Beispiele wären diese Codefragemente...
Datei.h
#import "libid:E60738C2-DEE8-41E3-B538-9306544CB32F" //MyWrapper
CComPtr<MyWrapper> pMyWrapper;
Datei.cpp
//Wird beim starten des Corba-Servers mit aufgerufen
void init()
{
hr = CoInitialize(NULL);
hr=pUnknown.CoCreateInstance(__uuidof(BEISPIELLib: :MyWrapper));
hr=pUnknown->QueryInterface(&pMyWrapper);
pMyWrapper->Methode1();
}
//Wird über Corba aufgerufen
void deInit()
{
pMyWrapper->MEthode2();
}
Ich initialsiere beim starten des Com-Server die Mehtode init, welche dann als Thread läuft.
Wenn ich dann über den Corba-Client die Methode2 aufrufe erhalte ich einen Exception bei pMyWrapper->Methode2(). Wie kann ich sicherstellen das ich von unterschiedlichen Threads auf das selbe Com-Objekt zugreife?
Hat jemand eine Idee?
Ich habe es bereits mit folgendes versucht...
http://www.microsoft.com/germany/msd....mspx?mfr=true
Am Ende der Methode1 gebe ich folgendes ein
CoMarshalInterThreadInterfaceInStream (__uuidof(pMyWrapper), pMyWrapper, &pStream);
und in der Methode2 rufe ich dann gleich beim start
CoGetInterfaceAndReleaseStream (pStream, __uuidof(pMyWrapper), (void**) &pMyWrapper);
Aber auch das bringt nicht.
Gruß
Rene
ich bin gerade dabei einen Corba-Server schreiben der Methoden bereit stellt, welche wiederrum dann auf einen Com-Serve zugreifen. Ich habe nur das Problem das die bereitgestellten Methoden vom Client mit unterschiedlichen Threads aufgerufen werden und ich dann nicht auf das selbe Com-Objekt zugreifen kann. Ich erhalte dann immer eine Exception.
Also Beispiele wären diese Codefragemente...
Datei.h
#import "libid:E60738C2-DEE8-41E3-B538-9306544CB32F" //MyWrapper
CComPtr<MyWrapper> pMyWrapper;
Datei.cpp
//Wird beim starten des Corba-Servers mit aufgerufen
void init()
{
hr = CoInitialize(NULL);
hr=pUnknown.CoCreateInstance(__uuidof(BEISPIELLib: :MyWrapper));
hr=pUnknown->QueryInterface(&pMyWrapper);
pMyWrapper->Methode1();
}
//Wird über Corba aufgerufen
void deInit()
{
pMyWrapper->MEthode2();
}
Ich initialsiere beim starten des Com-Server die Mehtode init, welche dann als Thread läuft.
Wenn ich dann über den Corba-Client die Methode2 aufrufe erhalte ich einen Exception bei pMyWrapper->Methode2(). Wie kann ich sicherstellen das ich von unterschiedlichen Threads auf das selbe Com-Objekt zugreife?
Hat jemand eine Idee?
Ich habe es bereits mit folgendes versucht...
http://www.microsoft.com/germany/msd....mspx?mfr=true
Am Ende der Methode1 gebe ich folgendes ein
CoMarshalInterThreadInterfaceInStream (__uuidof(pMyWrapper), pMyWrapper, &pStream);
und in der Methode2 rufe ich dann gleich beim start
CoGetInterfaceAndReleaseStream (pStream, __uuidof(pMyWrapper), (void**) &pMyWrapper);
Aber auch das bringt nicht.
Gruß
Rene
Comment