Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF信号服务器_C#_Wpf_.net Core_Signalr_Asp.net Core Signalr - Fatal编程技术网

C# WPF信号服务器

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服务器的信息。您可

我真的卡住了,需要一些帮助。 我有一个.NETCore3.1WPF应用程序,它解码篮球记分板数据,现在我需要将这些数据发送到.html文件。html文件作为模板通过CasparCG服务器打开一次,需要以某种方式实时更新数据

我目前认为最好的方法是在WPF应用程序中有一个SignalR服务器和一个运行SignalR客户端的html模板。其中一个要求是,我必须能够启动和停止一个按钮点击信号服务器


问题是,我完全不知道从哪里开始,因为似乎很少有关于在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);
        }
    }
}