0

当我试图改变变量的值时

 GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<status>(this, async Status=>
            {
              this.txt1.text = "Hi"
            });

在此处输入图像描述

我真的很困惑如何处理这个错误

4

1 回答 1

0

您只能从主 UI 线程更新 UI。为此,您需要使用 Device.BeginInvokeOnMainThread 方法在 UI 线程上调用对 UI 的更新。像这样:

GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<status>(this, async Status=>
        {
             Device.BeginInvokeOnMainThread(() =>
             {
                this.txt1.text = "Hi";
             });
        });

每个平台都有自己的在 UI 线程上调用的本机方法。在 WinPhone 中:

GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<status>(this, async Status=>
        {
             var coreWindow = CoreWindow.GetForCurrentThread();

             // Dispatcher needed to run on UI Thread
             dispatcher = coreWindow.Dispatcher;

             // RunAsync all of the UI info.
             dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
             {
                 this.txt1.text = "Hi";
             });
        });
于 2017-08-30T05:53:35.363 回答