ATL COM: Bi-direktional?
-
In der Literatur die ich bisher genutzt habe, nutzt immer nur der Client das Interface des COM Servers. Was aber, wenn der Server was vom Client wissen will, bzw. dem Client etwas mitteilen möchte?
Ein konkretes Beispiel: Der Client nutzt eine Methode des COM-Server-Interface um einen Wert zu erhalten. Der Server allerdings braucht für die Berechnung einige Zeit.
Eine mögliche Lösung wäre die Nutzung des Interface in einem Thread auszulagern. Lieber wäre mir jedoch, wenn der Server am Ende seiner Berechnung den Client "informieren" würde.
Wäre dankbar über Tipps/Hinweise
-
Der COM Client kann ein COM Interface (welches vom Server definiert wird) implementieren. Einen Zeiger auf dieses Interface kann er dem Server dann mitgeben, und der Server kann das verwenden um Funktionen im Client aufzurufen.
Wenn es um Events geht gibt es einen Standard wie das gemacht wird, und zwar Connection Points.
http://msdn.microsoft.com/en-us/library/ms678815(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms683857(VS.85).aspx
http://www.codeproject.com/KB/COM/connectionpoint.aspx
...