0

最近、プロジェクトで 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);

これは、サーバー インスタンスが UI で作成された後にプロパティを設定する方法を示すコードです。

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

前もって感謝します

4

1 に答える 1

0

それを読んで答えようとするのに時間を割いてくれた人に感謝します。

今のところ自分に合った解決策を見つけました。これが将来問題を引き起こす可能性のある解決策であるかどうか、誰かがヒントを与えることができることを願って、それをあなたと共有したいと思います.

分析した結果、両方のサーバー インスタンスが同じプロセスで実行されていることがわかりました。そのため、サーバー内のプロパティとしてシングルトンを作成しました。

シングルトン内に必要なものをすべて入れたので、質問で使用したいデリゲートのコードは次のようになります。

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));
        };

これが他の誰かに役立つことを願っています。不具合等ありましたらコメントお願いします。

于 2014-01-20T10:21:14.953 に答える