我正在开发一个UWP应用程序,它使用SignalR将实时消息发送到API。
一切正常,即使我的应用程序进入暂停状态(例如用户进入锁定屏幕),信号器成功保持连接活着。
问题是,当应用程序暂停时互联网连接丢失,网络套接字连接断开,我想在互联网访问再次启动后立即重新打开连接。
但我无法管理这项工作,请致电:
await HubConnection.Start();
无限期挂起,它永远不会返回,连接也不会重启。 我调查了一下,似乎IHubConnection.Start()调用了一个新线程,由于app被挂起,因此排队等候。我尝试像这样调用调度程序的方式相同:
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
async () =>
{
await HubConnection.Start(); // 1
});
在暂停状态期间永远不会调用语句// 1,但只要应用程序恢复,它就会被执行。
应用程序暂停时是否可以重新启动SignalR连接?或者它是否需要一个新的线程,必须排队才能恢复应用程序?