过于频繁地设置Label.Text会导致应用崩溃-Xamarin.Forms

时间:2018-10-11 19:09:13

标签: c# android xamarin mqtt tizen

我正在为移动/可穿戴设备开发MQTTnet应用程序。我已经在标准C#控制台应用程序和.Net Core应用程序中测试了我的代码,两者均按预期工作。我遇到的问题是,当我将代码移植到Xamarin Forms以便在Galaxy Watch上运行时。该应用程序将运行几秒钟,但随后将崩溃。我相信这可能是因为过于频繁地分配了标签文本?

我有一个MQTT发布器设备,以10ms的间隔输出一个简单的位置值。 Xamarin中的应用程序将锁定并最终崩溃。如果注释掉Label.Text分配,该应用程序将继续运行而不会崩溃。

这是我的Xamarin代码,有没有更好的方法来处理分配?

                // Event Handler to the ApplicationMessageRecevied event
                client.ApplicationMessageReceived += (s, e) =>
                {
                    StatusLabel.Text = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                };

1 个答案:

答案 0 :(得分:0)

我发现使用以下内容分配标签效果很好。我的发布者每隔2毫秒发送一次消息,手表稳定!

Device.BeginInvokeOnMainThread(() => {
                        PositionData.Text = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                    });