【问题标题】:SignalR doesn't work with .net core WPF applicationSignalR 不适用于 .net 核心 WPF 应用程序
【发布时间】:2021-04-21 19:15:54
【问题描述】:

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

【问题讨论】:

    标签: c# wpf .net-core asp.net-core-signalr


    【解决方案1】:

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

    如果链接腐烂,这是您发布的代码:

    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);
            }
        }
    }
    

    【讨论】:

    • 谢谢,我没想到这是我问题的根本原因。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 2019-09-07
    • 2019-01-03
    相关资源
    最近更新 更多