MFC And COM/OLE Threading
Steven Binney -- sbinney@waters.com
Friday, April 19, 1996
VC++4.1/NT 4.0 Beta
Is it possible implement an OLE multi-threaded apartment model server =
under MFC??
I am developing a server with a large number of method and would like to =
take advantage of App and Class Wizards Automation support ( =
particularly in generating IDL/ODL). The servers will be accessed by =
several clients which are either VB of MFC apps. It does not seem likely =
that VC++/MFC 4.x will support this. Any help / suggestions would be =
greatly appreciated.
My server needs to be multi-threaded and must also act as a client.
Steve Binney
Kevin Gilpin/Trilogy
Monday, April 22, 1996
Check out CoMarshalInterThreadInterfaceInStream and it's unmarshaling
counterpart. These COM API functions allow you to easily pass an interface
between threads. The general procecedure would look like:
You get a call into your (MFC-generated) Automation method, one of the
parameters of which will presumably be the interface pointer to the client
Marshal the client's interface pointer into a stream using the above API
Begin a new thread, passing the LPSTREAM and any other relevant information
through the pParam argument of AfxBeginThread
In the pfnThreadProc which you call, you can then unmarshal the interface from
the stream and use it freely
So the marshaling stuff is not provided by MFC, but rather by the COM API. You
can still use all the MFC support for Automation (and other) interfaces, though.
On 04/19/96 at 07:12 AM, sbinney @ waters.com (Steven Binney) @ SMTP wrote:
VC++4.1/NT 4.0 Beta
Is it possible implement an OLE multi-threaded apartment model server under
MFC??
I am developing a server with a large number of method and would like to take
advantage of App and Class Wizards Automation support ( particularly in
generating IDL/ODL). The servers will be accessed by several clients which are
either VB of MFC apps. It does not seem likely that VC++/MFC 4.x will support
this. Any help / suggestions would be greatly appreciated.
My server needs to be multi-threaded and must also act as a client.
Steve Binney
| Вернуться в корень Архива
|