我正在创建一个应用程序,并且当我使用MessagingCenter发送多次调用时,它需要将参数发送到另一页并使用Messagingcenter发送参数。
如果我下次使用unscribe,则下次不会收到。
This app isn't verified
我只想使用订阅发送一次,并且只发送一次。
任何人都可以调查一下并建议我该怎么做吗?
答案 0 :(得分:1)
您是否只想发送和接收一次消息?然后,您可以在收到消息后使用取消订阅方法。例如,您可以这样:
MessagingCenter.Subscribe<MyPage, string>(this, "Invoke", async (sender,
arg) =>
{
await Process(arg);
MessagingCenter.Unsubscribe<MyPage>(this,"Invoke");
});
已更新:
在DetailPage
上,您可以在方法MessagingCenter.Subscribe
中调用OnAppearing()
,并在方法MessagingCenter.Unsubscribe
中调用OnDisappearing
,如下所示:
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<ListPage, string>(this, "Invoke", async (sender, arg) =>
{
Debug.Write("123456----> get one msg");
DisplayAlert("Alert", "We have received a message.", "OK");
});
}
protected async override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<ListPage,string>(this, "Invoke");
}
}
在ListPage
async void OnTap (object sender, EventArgs e)
{
await Navigation.PushAsync(new DetailPage());
try
{
MessagingCenter.Send(this, "Invoke", "Invokedtrue");
Debug.Write("123456----> send one msg");
}
catch (Exception ex)
{
Debug.Write(ex);
}
}
注意:当您输入ListPage
时,可以尝试以下代码:
MainPage = new NavigationPage( new ListPage());
完整演示的链接为here,您可以检查它。