Xamarin.forms 非常简单的信号客户端更新XMAL用户界面

Xamarin.forms 非常简单的信号客户端更新XMAL用户界面,xamarin.forms,signalr,signalr.client,Xamarin.forms,Signalr,Signalr.client,我试图从PCL获取信号器的最基本部分,发送消息,然后从集线器接收消息并更新标签。 从集线器方面来看,一切都工作得很好,当我从条目发送消息并进行调试时,我可以看到新输入的消息从集线器返回 奇怪的是,在第一次消息发送时更新标签之前,我需要按两次发送按钮,然后任何其他发送都不会更新标签,但新输入的发送消息会从MessageReceived部分的中心返回。标签永远不会更新。有什么想法吗 由于最终解决方案不会过于复杂,我还没有走上使用viewmodel的道路。在http响应之后,我已经多次从代码背后更新标

我试图从PCL获取信号器的最基本部分,发送消息,然后从集线器接收消息并更新标签。 从集线器方面来看,一切都工作得很好,当我从条目发送消息并进行调试时,我可以看到新输入的消息从集线器返回

奇怪的是,在第一次消息发送时更新标签之前,我需要按两次发送按钮,然后任何其他发送都不会更新标签,但新输入的发送消息会从MessageReceived部分的中心返回。标签永远不会更新。有什么想法吗

由于最终解决方案不会过于复杂,我还没有走上使用viewmodel的道路。在http响应之后,我已经多次从代码背后更新标签

这是我的密码

private HubConnection Connection = new HubConnection("http://*******");
private IHubProxy ChatHubProxy;

public RealTime()
{
     InitializeComponent();

     ChatHubProxy = Connection.CreateHubProxy("SynapseVerificationHub");

     Connection.Start();

     ChatHubProxy.On("MessageReceived", (string username, string text) =>
     {

     RecievedTxt.Text = text;

     });

 }

 private void Button_Clicked(object sender, EventArgs e)
 {
      ChatHubProxy.Invoke("SendMessage", "Kosta", KostaMessageTxt.Text);
 }

因为事件处理程序运行在不同的线程上,所以需要从UI线程更新UI,使其立即生效

将代码更改为:

ChatHubProxy.On("MessageReceived", (string username, string text) =>
{
    Device.BeginInvokeOnMainThread (() => {
        RecievedTxt.Text = text;
    });

});

尝试更新UI threadHay上的标签,谢谢@YuriS,效果非常好