C# 信号器在UWP中工作缓慢,在控制台应用中工作快速

C# 信号器在UWP中工作缓慢,在控制台应用中工作快速,c#,uwp,signalr,C#,Uwp,Signalr,我有一个信号服务器,它向连接到它的所有客户端发送某些消息。我创建了两个示例客户端,一个是UWP,另一个是C#中的一个简单控制台应用程序。一旦从SignalR调用了客户端的方法,我只需记录一条消息 引人注目的是,控制台应用程序会在服务器发送数据时立即记录数据,但UWP应用程序会在其中增加约6-30秒的延迟。尽管它有时会频繁触发,但它能够在10次中重现6次 下面是UWP客户端的代码,类似地,我已经在控制台应用程序中记录了消息 async Task SetupSignalR() {

我有一个信号服务器,它向连接到它的所有客户端发送某些消息。我创建了两个示例客户端,一个是UWP,另一个是C#中的一个简单控制台应用程序。一旦从SignalR调用了客户端的方法,我只需记录一条消息

引人注目的是,控制台应用程序会在服务器发送数据时立即记录数据,但UWP应用程序会在其中增加约6-30秒的延迟。尽管它有时会频繁触发,但它能够在10次中重现6次

下面是UWP客户端的代码,类似地,我已经在控制台应用程序中记录了消息

async Task SetupSignalR()
    {

        var conn = new HubConnection(baseUrl);
        Writer.Text += (string.Format("Creating hub proxy with :{0}\n", baseUrl));
        var proxy = conn.CreateHubProxy("PumpStatusHub");


        Writer.Text += "Starting Connection\n";


        try
        {
            conn.Start().Wait();
            Writer.Text += "Connection started\n";
            proxy.Invoke("OpenPortReading").Wait();//, UserName, TextBoxMessage.Text);
            Writer.Text += "Port invoked\n";
            proxy.On<string>("ReadUdpData", OnMessage);
        }
        catch (HttpRequestException ex)
        {
            Writer.Text += "Unable to connect to server: Start server 
                            before connecting clients.\n";
            Writer.Text += ex.Message + "\n";
        }
        catch (Exception ex)
        {
            Writer.Text += ex.Message + "\n";
            Task.Delay(3000).Wait();
            SetupSignalR().Wait();
        }
    }

    private void OnMessage(string obj)
    {
        Windows.ApplicationModel.Core.CoreApplication.MainView.
            Dispatcher.RunAsync(CoreDispatcherPriority.High, (DispatchedHandler)(() =>
            {
                Writer.Text += string.Format("Message received: {0}\n"
                                            , counter++);
            }));
    }
异步任务SetupSignalR()
{
var conn=新的HUB连接(baseUrl);
Writer.Text+=(string.Format(“使用:{0}\n”,baseUrl创建集线器代理”);
var proxy=conn.createhubbroxy(“PumpStatusHub”);
Writer.Text+=“正在启动连接\n”;
尝试
{
连接开始()等待();
Writer.Text+=“连接已启动\n”;
proxy.Invoke(“OpenPortReading”).Wait();/,用户名,TextBoxMessage.Text);
Writer.Text+=“调用的端口\n”;
On(“ReadUdpData”,OnMessage);
}
捕获(HttpRequestException-ex)
{
Writer.Text+=“无法连接到服务器:启动服务器
在连接客户端之前。\n“;
Writer.Text+=ex.Message+“\n”;
}
捕获(例外情况除外)
{
Writer.Text+=ex.Message+“\n”;
Task.Delay(3000.Wait();
SetupSignalR().Wait();
}
}
私有void OnMessage(字符串obj)
{
Windows.ApplicationModel.Core.CoreApplication.MainView。
Dispatcher.RunAsync(CoreDispatcherPriority.High,(DispatchedHandler)(()=>
{
Writer.Text+=string.Format(“收到的消息:{0}\n”
,计数器++);
}));
}

任何帮助都将不胜感激。提前感谢。

我通过与SignalR开发人员合作解决了这个问题,并发现了一件有趣的事情,即在使用服务器发送的事件作为传输时,SignalR for UWP客户端出现了一个问题,他们正在解决这个问题


我通过使用长轮询传输解决了此问题,因为Windows 7不支持WebSocket。

请提供代码,否则问题将被解决。UWP应用程序的测试环境是什么,请更改设备或更新网络连接以再次测试,并检查是否有相同的结果?如果数据接收速度慢,对您有什么不良影响?您从服务器发送的数据不是什么?在同一测试环境中,控制台应用程序客户端立即显示数据,但uwp客户端显示延迟