簡體   English   中英

SignalR 不適用於 .net 內核 WPF 應用程序

[英]SignalR doesn't work with .net core WPF application

我正在開發一個 .net 核心應用程序,它將使用 SignalR 在服務器和客戶端之間進行通信。 似乎 .net 核心 WPF 客戶端無法啟動與服務器的連接。 到達 StartAsync 方法后,它掛起,沒有任何信息。 這是一個示例代碼 我還准備了一個控制台客戶端,它使用相同的方式連接到服務器並且工作正常。 有沒有人遇到過類似的問題?

它是死鎖的。 不要在 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);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM