WPF SignalR实例
时间: 2024-01-20 17:09:43 浏览: 28
WPF SignalR是一种实时Web应用程序框架,可用于在浏览器和服务器之间实现双向通信。在WPF中,您可以使用SignalR来实现实时通信,并将状态更改推送到客户端。以下是一个简单的WPF SignalR实例,展示如何在WPF应用程序中使用SignalR。
1. 创建WPF应用程序
首先,您需要创建一个WPF应用程序。使用Visual Studio,选择“文件”>“新建”>“项目”,然后选择“WPF应用程序”。在创建项目向导中,选择“桌面应用程序(.NET Framework)”作为项目类型。
2. 安装SignalR
使用NuGet包管理器,安装SignalR客户端库和SignalR服务器库。
3. 添加SignalR客户端代码
在WPF应用程序中,打开MainWindow.xaml.cs文件,并添加以下代码:
```csharp
using Microsoft.AspNet.SignalR.Client;
public partial class MainWindow : Window
{
private HubConnection connection;
private IHubProxy hubProxy;
public MainWindow()
{
InitializeComponent();
connection = new HubConnection("http://localhost:8080/");
hubProxy = connection.CreateHubProxy("myHub");
// 接收消息
hubProxy.On<string>("broadcastMessage", message => {
Dispatcher.Invoke(() => {
// 将消息添加到ListBox中
listBox.Items.Add(message);
});
});
// 连接SignalR服务器
connection.Start().Wait();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
// 发送消息
hubProxy.Invoke("Send", "WPF Client", textBox.Text);
}
}
```
在上面的代码中,我们首先创建了一个SignalR连接,并使用连接创建了一个代理。然后,我们使用代理的On方法订阅了“broadcastMessage”事件,并在事件中接收到消息时将其添加到ListBox中。最后,我们使用代理的Invoke方法发送消息。
4. 添加SignalR服务器代码
在WPF应用程序中,打开“解决方案资源管理器”,右键单击项目,选择“添加”>“新建项”,并创建一个新的SignalR Hub类。在这个类中,添加以下代码:
```csharp
using Microsoft.AspNet.SignalR;
public class MyHub : Hub
{
public void Send(string name, string message)
{
Clients.All.broadcastMessage(name, message);
}
}
```
在上面的代码中,我们创建了一个名为“myHub”的Hub,并在Hub中添加了一个名为“Send”的方法。当客户端调用此方法时,它将使用Clients.All.broadcastMessage方法将消息广播到所有连接的客户端。
5. 运行应用程序
现在,您已经准备好运行应用程序了。首先,启动SignalR服务器。然后,启动WPF应用程序。在WPF应用程序中,输入消息文本并单击“发送”按钮。您应该能够在SignalR服务器和WPF应用程序之间看到实时通信。
以上就是一个简单的WPF SignalR实例。您可以使用这个实例作为起点来构建更复杂的实时Web应用程序。