title: COM outbound call results in "An outgoing call cannot be made since the application is dispatching an input-synchronous call."
body: <p>I have a COM server (C++/STA (MFC based app)) and a COM client (C#/MTA). The COM server must live in an STA, since it's an MFC app (I have no choice in this matter). The client issues a call to the server, and the server issues a callback to the client. That's where the error happens (<code>RPC_E_CANTCALLOUT_ININPUTSYNCCALL</code>). I'm guessing if the server had been an MTA, this problem would never have arised, but sadly, the documentation for MFC explicitly denies initializing the apartment as an MTA.</p>
  
  <p>Any ideas on how to work around this problem?</p>
  
  <p>I have been toying with the idea of letting the server object (the object I expose through the running object table) live in an apartment of its own (MTA). Would this be a good idea, or is there something simpler to try first?</p>
  
  <p><strong>UPDATE</strong> </p>
  
  <p>The server object is just a thin interface point to certain functions within the application. Most of the time it just reads and writes to memory locations, but there are instances where it generates window messages to various windows within the application. The server object itself is not the entire application.</p>