SignalR重新连接事件在Xamarin表单中没有正确触发



我正在编写一个连接到SignalR服务器的Xamarin Forms Android应用程序。我的目标是在用户的服务器连接丢失时提醒用户,但是当触发HubConnection.ReconnectingEvent时,处理程序的内容(如下所示)不会运行。下面是代码:

public static class SignalRService
{
private static HubConnection _connection { get; set; }
public static void SetupSignalRService(string url, string hubEndpoint)
{
_connection = new HubConnectionBuilder()
.WithUrl($"{url}/{hubEndpoint}")
.WithAutomaticReconnect()
.Build();
_connection.Reconnecting += Connection_Reconnecting;
}
public static async Task Connect()
{
await _connection.StartAsync();
}
public static Task Connection_Reconnecting(Exception arg)
{
Application.Current.MainPage.DisplayAlert("Reconnecting", "Check your server status.", "ok");
return Task.CompletedTask;
}
}

当使用断点时,我可以看到线程进入开始代码块{和第一行,但在我继续之后跳出方法。我在一个c#控制台应用程序项目上尝试过非常类似的代码,它马上就工作了。WriteLine(而不是DisplayAlert)。你知道我还能尝试什么吗?

非常感谢用户/1338/jason提供的答案:

你试过在主线程上运行DisplayAlert吗?

用Xamarin。基本要素的MainThread类,代码确实工作:

public static Task Connection_Reconnecting(Exception arg)
{
MainThread.BeginInvokeOnMainThread(() => 
Application.Current.MainPage.DisplayAlert("Reconnecting", "Check your server status.", "ok"));
return Task.CompletedTask;
}

最新更新