我在使用 xamarin 消息中心时遇到了一个烦人的问题。我添加了一些断点,并注意到只发送了一条消息,但订阅者收到了两次。
我的发件人代码(第 2 页):
async void CompartilhaMapa(System.Object sender, System.EventArgs e)
{
...
MessagingCenter.Send<Page2, ParamType>(this, "PopUpData", new ParamType() { Tipo = 2, Valor = Coords });
Console.WriteLine("msg sent"); //displayed only once and line above has a break line assuring this
await Navigation.PopPopupAsync();
}
第1页(订阅者):
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<Page2, ParamType>(this, "PopUpData", async (sender, arg) =>
{
Task.WaitAll(tasks.ToArray());
switch (arg.Tipo)
{
case 2:
Console.WriteLine(" *********** msg received"); //this is outputted twice
tasks.Add(Task.Run(() => ShareMap(arg))); //this is called twice
break;
case 3: tasks.Add(Task.Run(() => ShareEvent(arg))); break;
case 6: tasks.Add(Task.Run(() => ShareImage(arg))); break;
}
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<Page2, ParamType>(this, "PopUpData");
}
我在这里做错了什么?