■はじめに
本記事は、SignalRを利用して、UWPのアプリからWPFのアプリのメソッドを実行する為の方法をまとめた記事の、WPFアプリの作成記事です。
■手順
Visual Studioの新規プロジェクト作成より、「WPF アプリ(.NET Framework)」を選択し、「次へ」を押下する。
プロジェクト名に任意の名前を設定し、「作成」を押下する。
プロジェクトが起動したら、「ソリューション エクスプローラー」のプロジェクト名を右クリックする。
右クリックで出てきたポップアップの「NuGet パッケージ管理」を選択する。
NuGetのウィンドウの「参照」を押下する。
検索項目に「Microsoft.AspNet.SignalR.Core」を入力し、対象のパッケージを選択後、「インストール」ボタンを押下する。
※ライセンスの同意などを行い、NuGetがインストールされるのをまつ。
※「インストール」を押下場所が「アンインストール」に変われば、インストール成功です。
同様の手順で、以下のパッケージをインストールする。(一番上は、上記手順でインストールされているはずです。)
Microsoft.AspNet.SignalR.Core
Microsoft.AspNet.SignalR.SystemWeb
Microsoft.Owin.Cors
Microsoft.Owin.Hosting
Microsoft.Owin.Host.HttpListener
「ソリューション エクスプローラー」のプロジェクト名を右クリックし、「追加」内の「クラス」を選択する。
「クラス」が選択されている状態で、「名前」に「AppStartup.cs」を入力し、「追加」を押下する。
※同様の手順で、「SampleHub.cs」クラスも作成する。
出来上がった「AppStartup」クラスに以下を記載する。
using Microsoft.Owin.Cors;
using Owin;
namespace SignalRSampleServer
{
class AppStartup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR("/device", new Microsoft.AspNet.SignalR.HubConfiguration());
}
}
}
出来上がった「SampleHub」クラスに以下を記載する。
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
namespace SignalRSampleServer
{
[HubName("Sample")]
public class SampleHub : Hub
{
public void CallSample()
{
System.Diagnostics.Debug.WriteLine("=====SampleHubの呼び出す=====");
}
}
}
プロジェクト作成時に用意されていた、「MainWindow.xaml」を展開し、「MainWindow.xaml.cs」を開き、以下になるように記載する。
※具体的には、「_startup」のグローバル変数の追加と、「MainWindow」のコンストラクタ内で、ローカルホストの起動を追加しています。
using Microsoft.Owin.Hosting;
using System;
using System.Windows;
namespace SignalRSampleServer
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
private IDisposable _startup;
public MainWindow()
{
InitializeComponent();
_startup = WebApp.Start<AppStartup>("http://localhost:8080");
}
}
}
こちらのソースは以下のGithubにアップしています。