Несколько оповещений только с одной подпиской MessagingCenter - PullRequest
0 голосов
/ 23 октября 2018

Я разрабатываю пример, в котором Messaging Center отправляет сообщения о статусе, не связанные с кодом устройства, на мои модели представлений.В этот момент я использовал предупреждающее сообщение, чтобы заметить событие, прежде чем пытаться просмотреть модели.

Для этого я использовал экземпляр статического представления в конструкторе приложения общего ресурса (App.xaml), где в конструкторе представления я добавляю статус.

Приложение (общее)

public partial class App : Application
    {

        #region MasterDetailPage
        public static MasterDetailPage MDP;
        public static NavigationPage NAV = null;
        public static MainView _mainpage;
        #endregion

        public App ()
        {
            InitializeComponent();
            NAV = new NavigationPage(new StarterView()) { BarBackgroundColor = Color.FromHex("701424"), BarTextColor = Color.White }; ;
            MDP = new MasterDetailPage();
            MDP.BackgroundColor = Xamarin.Forms.Color.FromHex("701424");
            _mainpage = new MainView();
            MDP.Master = _mainpage;
            MDP.Detail = NAV;
            MainPage = MDP;
            MainPage.Title = "H2X";


        }

(Просмотреть общее)

public MainView ()
        {
            InitializeComponent ();

            string a="Test";
            #region MessegeCenter

            MessagingCenter.Subscribe<string,string>("APP", "Message_Received", async (sender,arg) => 
            {
                string b = a;
                a = $"{arg}";
                await DisplayAlert("Atenção", a+b, "Ok");
            });
            #endregion

        }

В код конкретной платформы (Устройство - UWP) я создаю таймер, который отправляет сообщениячерез некоторое время его можно создать в конструкторе главной страницы.

void dispatcherTimer_Tick(object sender, object e)
        {
            DateTimeOffset time = DateTimeOffset.Now;
            TimeSpan span = time - lastTime;
            lastTime = time;
            //Time since last tick should be very very close to Interval
            TimerLog.Text += timesTicked + "\t time since last tick: " + span.ToString() + "\n";
            timesTicked++;
            if (timesTicked > timesToTick)
            {                   
                MessagingCenter.Send<string,string>("APP","Message_Received","MR");
            }
        }

Когда я его запускаю, открываются два предупреждающих сообщения с одинаковым текстом, но подписок не существует.Тот же текст дает мне информацию, что это было из того же события отправки.

В чем проблема?Есть ли какие-либо отношения с моим статическим видом?

Заранее спасибо

Гильерме

...