首页 > 解决方案 > 过于频繁地设置 Label.Text 会导致应用程序崩溃 - Xamarin.Forms

问题描述

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

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

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

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

标签: c#androidxamarinmqtttizen

解决方案


我发现使用以下方法分配标签效果很好。我的发布者正在以 2ms 的间隔发送消息,并且手表稳定!

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

推荐阅读