C# WPF信号服务器
我真的卡住了,需要一些帮助。 我有一个.NETCore3.1WPF应用程序,它解码篮球记分板数据,现在我需要将这些数据发送到.html文件。html文件作为模板通过CasparCG服务器打开一次,需要以某种方式实时更新数据 我目前认为最好的方法是在WPF应用程序中有一个SignalR服务器和一个运行SignalR客户端的html模板。其中一个要求是,我必须能够启动和停止一个按钮点击信号服务器C# WPF信号服务器,c#,wpf,.net-core,signalr,asp.net-core-signalr,C#,Wpf,.net Core,Signalr,Asp.net Core Signalr,我真的卡住了,需要一些帮助。 我有一个.NETCore3.1WPF应用程序,它解码篮球记分板数据,现在我需要将这些数据发送到.html文件。html文件作为模板通过CasparCG服务器打开一次,需要以某种方式实时更新数据 我目前认为最好的方法是在WPF应用程序中有一个SignalR服务器和一个运行SignalR客户端的html模板。其中一个要求是,我必须能够启动和停止一个按钮点击信号服务器 问题是,我完全不知道从哪里开始,因为似乎很少有关于在WPF应用程序上托管SignalR服务器的信息。您可
问题是,我完全不知道从哪里开始,因为似乎很少有关于在WPF应用程序上托管SignalR服务器的信息。您可以在WPF应用程序中托管ASP.NET Core(包括SignalR) 请在
.csproj
文件中将Microsoft.AspNetCore.App
NuGet包作为框架参考:
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
</ItemGroup>
您好,您应该首先实现这样的示例(),这样您就可以开始开发您的应用程序了。您有以下microsoft文档可以开始:)非常感谢!尽管我仍在试图找出如何从服务器向客户端发送消息。@Vilius:例如,您可以使用
IHubContext
:。或者hub的客户机
属性:。我读过文档,但感觉自己像个傻瓜。在MainWindow类中,如果我想获得HubContext,我将如何获得它?私有IHubContext _hubContext=@Vilius-你有没有想过我们该如何实施?如果您能分享与此相关的主要代码或方法,我将不胜感激。
using System.Windows;
using System.ComponentModel;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private IHost _host;
private async void Start_Click(object sender, RoutedEventArgs e)
{
_host?.Dispose();
_host = Host.CreateDefaultBuilder()
.ConfigureWebHostDefaults(webBuilder => webBuilder
.UseUrls("http://localhost:5100")
.ConfigureServices(services => services.AddSignalR())
.Configure(app =>
{
app.UseRouting();
app.UseEndpoints(endpoints => endpoints.MapHub<StreamHub>("/streamHub"));
}))
.Build();
await _host.StartAsync();
}
private async void Stop_Click(object sender, RoutedEventArgs e)
{
if (_host != null)
{
await _host.StopAsync();
_host.Dispose();
}
}
protected override void OnClosing(CancelEventArgs e)
{
_host?.Dispose();
base.OnClosing(e);
}
}
}