public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { if (syncContext == null) { return(nextSink.AsyncProcessMessage(msg, replySink)); } // Make a copy of the message since MS.NET seems to free the original message // once it has been dispatched. if (!isMono) { msg = new MethodCall(msg); } MsgData md = new MsgData(); md.InMessage = msg; md.ReplySink = replySink; syncContext.AsyncDispatch(new StatefulMessageHandler(AsyncDispatchMessage), md); return(null); }