我们最近尝试在我们的项目中使用XML-RPC.Net库。 服务器(.Net Remoting)和客户端都是根据我们在http://xml-rpc.net/上找到的说明进行的。
已建立连接,我们从服务器获取数据等。
正如标题所述,现在,我们想知道如何使我们的XML-RPC服务器实例(在第一次客户端调用之后创建)能够向WPF UI提供反馈。 我们想要完成的是在服务器属性上注册一个事件,以便调用可以到达UI线程。
我们对这方面的任何建议持开放态度。
IDictionary props = new Hashtable();
props["name"] = "SubsetHttpChannel";
props["port"] = 5678;
channel = new System.Runtime.Remoting.Channels.Http.HttpChannel(
props,
null,
new XmlRpcServerFormatterSinkProvider()
);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType( typeof(SubsetServer), "subsetserver.rem", WellKnownObjectMode.Singleton);
Server = new SubsetServer();
Server.Machine.OnChangeState += delegate(State actual, State next, Event pEvent)
{
uiWindowInstance.PostMessage(string.Format("Subset Server: {0} -> {1}", actual.Name, next.Name));
};
使用的技术:VS2012,WPF 4.5和XML-RPC.NET 2.5.0
先谢谢
答案 0 :(得分:0)
感谢任何花时间阅读并尝试回答的人。
我找到了一个适合我的解决方案。我想与你分享,希望有人可以给出任何暗示,这是一个可能在将来产生问题的解决方案。
经过分析,我发现两个服务器实例都在同一个进程中运行。所以我在我的服务器中创建了一个Singleton作为属性。
我在Singleton中放了我需要的东西,所以对于我想在我的问题中使用的委托,代码现在是:
Server = new SubsetServer();
Server.**singleton**.Machine.OnChangeState += delegate(State actual, State next, Event pEvent)
{
uiWindowInstance.PostMessage(string.Format("Subset Server: {0} -> {1}", actual.Name, next.Name));
};
希望这有助于其他任何人。 如果您发现任何缺陷,请发表评论。