SignalR 不适用于 .net 核心 WPF 应用程序

SignalR doesn't work with .net core WPF application

我正在开发一个 .net 核心应用程序,它将使用 SignalR 在服务器和客户端之间进行通信。 .net core WPF 客户端似乎无法启动与服务器的连接。到达 StartAsync 方法后,它会在没有任何信息的情况下挂起。这是一个 sample code。我还准备了一个控制台客户端,它使用相同的方式连接到服务器并且工作正常。有没有人遇到过类似的问题?

死锁了。不要在 UI 同步上下文中使用 .Wait()

以防 link-rot,这是您发布的代码:

namespace Communication
{
    public class LiveService
    {
        private readonly HubConnection _hubConnection;
        public LiveService()
        {
            var hubConnectionBuilder = new HubConnectionBuilder();
            _hubConnection = hubConnectionBuilder
                .WithUrl("https://localhost:5001/signalrTestHub/")
                .Build();

            _hubConnection.StartAsync(default).Wait();
         }

        public async Task Send(CancellationToken cancellationToken = default)
        {
            await _hubConnection.SendAsync("SendTestMsg", "Test value", cancellationToken);
        }
    }
}

这是一个关于如何修复它的示例:

namespace Communication
{
    public class LiveService
    {
        private readonly HubConnection _hubConnection;
        private readonly Task _initialized;

        public LiveService()
        {
            var hubConnectionBuilder = new HubConnectionBuilder();

            _hubConnection = hubConnectionBuilder
                .WithUrl("https://localhost:5001/signalrTestHub/")
                .Build();

            _initialized = _hubConnection.StartAsync(default);
        }

        public async Task Send(CancellationToken cancellationToken = default)
        {
            await _initialized;
            await _hubConnection.SendAsync("SendTestMsg", "Test value", cancellationToken);
        }
    }
}