【问题标题】:Setting Label.Text too frequently causes an app crash - Xamarin.Forms过于频繁地设置 Label.Text 会导致应用程序崩溃 - Xamarin.Forms
【发布时间】:2018-10-11 19:09:12
【问题描述】:

我正在开发用于移动/可穿戴设备的 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# android xamarin mqtt tizen


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多