C# MessagingCenter。未触发订阅

C# MessagingCenter。未触发订阅,c#,xamarin.forms,C#,Xamarin.forms,我正在尝试实现MessagingCenter将数据从本机发送到pcl。 在本机中,我设置了send方法: MessagingCenter.Send(App.Current,“Autorizzato”) 以下是主页上的代码: protected override void OnStart() { MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {

我正在尝试实现
MessagingCenter
将数据从本机发送到pcl。 在本机中,我设置了send方法:

MessagingCenter.Send(App.Current,“Autorizzato”)

以下是主页上的代码:

protected override void OnStart()
       {  MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {                    
               Debug.WriteLine("Ok!");
          });
       }
protectedoverride void OnStart()
{MessagingCenter.Subscribe(这个,“自动转载”,发送方)=>{
Debug.WriteLine(“Ok!”);
});
}
代码执行正确,但未触发
MessagingCenter.Subscribe
。 实例的类型都是相同的


那么,如何解决这个问题呢?

如果您查看我的博客:

它提供了有关如何使用XF消息中心的详细信息

如何订阅:

Subscribe<TSender> (object subscriber, string message, Action<TSender> callback, TSender source = null)
Subscribe(对象订户、字符串消息、操作回调、TSender source=null)
所以在应用程序中,它看起来像:

MessagingCenter.Subscribe<Sender> (this, "Hi", (sender) => {
// do something whenever the "Hi" message is sent
});
MessagingCenter.Subscribe(这个“嗨”,发送者)=>{
//无论何时发送“Hi”信息,都要采取措施
});
您的发件人可能是:

MessagingCenter.Send<MainPage> (this, "Hi");
MessagingCenter.Send(这个“Hi”);
这些变化应该有助于实现这一目标


如果有问题,请随时回复代码本身,但您需要确保在发送消息时,
TSender
已实例化,而不是空

您在哪里调用了
MessagingCenter.Send
?如果您在
OnCreate
方法中调用了
MainActivity
,请尝试将其移动到
OnStart
方法

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{

    protected override void OnStart()
    {
        base.OnStart(); 
        MessagingCenter.Send<Xamarin.Forms.Application>(App.Current, "Autorizzato");
    }
{

我已经读过你的博客了,我遵循了这些技巧。尽管如此,我相信问题在于发送者的类型,即本机项目中的AndroidX.Fragment.App.FragmentActivity。即使在PCL项目中的Subscribe中,如何指定相同的类型?您可以使用
对象
作为
参数以避免that@jason:不幸的是,它仍然没有被触发:(您是否同时使用
发送和订阅?参数
非常匹配是的,我做了,但什么都没有
public partial class App : Application
{
    public App()
    {
      
        InitializeComponent();          
        ...
    }

    protected override void OnStart()
    {
        MessagingCenter.Subscribe<Application>(this, "Autorizzato", (sender) => {
           Debug.WriteLine("Ok!");
        });
    }
}