技術ブログ

プログラミング、IT関連の記事中心

SignalRでの連携(引数・戻り値)

■はじめに

本記事は、SignalRを利用して、UWPのアプリからWPFのアプリのメソッドを実行する為の方法をまとめた記事の、引数と戻り値の方法です。

以下の2つの準備ができている前提となります。

UWPアプリ

WPFアプリ

■引数

サーバー側のソースの「SampleHub」クラスに以下のメソッドを追加する。

public void CallSampleTwo(string sample)
{
    System.Diagnostics.Debug.WriteLine("=====SampleHubの呼び出す=====");
    System.Diagnostics.Debug.WriteLine(sample);
}

クライアント側のソースの「MainPage」クラスの「proxy.Invoke」の処理を以下に書き換える。

変更前

proxy.Invoke("CallSample").Wait();

変更後

proxy.Invoke("CallSampleTwo", "引数のデータだよ").Wait();

その後、サーバー実行を行ったあとクライアントの実行を行い、サーバー側のコンソールに以下が出力されていることを確認する。

■戻り値

サーバー側のソースの「SampleHub」クラスに以下のメソッドを追加する。

public void CallSampleThree()
{
    System.Diagnostics.Debug.WriteLine("=====あああああああああああ123=====");
    Clients.All.HelloWorld("あいうえお", "かきくけこ");
}

クライアント側のソースの「MainPage」クラスの「proxy.Invoke」の処理を以下に書き換える。

変更前

proxy.Invoke("CallSample").Wait();

変更後

proxy.Invoke("CallSampleThree").Wait();

クライアント側のソースの「MainPage」クラスの「var proxy = connection.CreateHubProxy("Sample");」以降、「connection.Start().Wait();」以前に以下を追加する。

proxy.On<string, string>("HelloWorld", (user, message) =>
{
    System.Diagnostics.Debug.WriteLine("=====あああああああああああ=====");
    System.Diagnostics.Debug.WriteLine(user);
    System.Diagnostics.Debug.WriteLine(message);
});

その後、サーバー実行を行ったあとクライアントの実行を行い、クライアント側のコンソールに以下が出力されていることを確認する。