/// <summary> /// Overrides message calls and translates them to messages to remote application. /// </summary> /// <param name="msg">Method invoke message (from RealProxy base class)</param> /// <returns>Method invoke return message (to RealProxy base class)</returns> public override IMessage Invoke(IMessage msg) { var message = msg as IMethodCallMessage; if (message == null) { return(null); } var requestMessage = new CJiaRemoteInvokeMessage { ServiceClassName = typeof(TProxy).Name, MethodName = message.MethodName, Parameters = message.InArgs }; var responseMessage = _clientMessenger.SendMessageAndWaitForResponse(requestMessage) as CJiaRemoteInvokeReturnMessage; if (responseMessage == null) { return(null); } return(responseMessage.RemoteException != null ? new ReturnMessage(responseMessage.RemoteException, message) : new ReturnMessage(responseMessage.ReturnValue, null, 0, message.LogicalCallContext, message)); }
void Client_MessageReceived(object sender, Net.Communication.Messages.MessageEventArgs e) { CJiaRemoteInvokeMessage oMsg = (CJiaRemoteInvokeMessage)e.Message; string msg = oMsg.ServiceClassName + " " + oMsg.MethodName; this.Invoke(new Action(() => ShowMsg(msg))); }