Установка слишком часто Label.Text вызывает сбой приложения - Xamarin.Forms - PullRequest
0 голосов
/ 11 октября 2018

Я работаю над приложением 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);
                };

1 Ответ

0 голосов
/ 14 октября 2018

Я обнаружил, что использование следующего для назначения метки работает хорошо.Мой издатель отправляет сообщения с интервалом в 2 мс, и часы стабильны!

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