Pregunta

Mi aplicación tiene una clase Singleton llamada Cyclemanager. He creado una clase sellada para este propósito como este

public sealed class CycleManager
{
    public static readonly CycleManager instance = new CycleManager();

    public CycleManager()
    {
        //ReadFromIsolatedStorage();
    }

    public static CycleManager Instance
    {
        get
        {
            return instance;
        }

    }
}

Y el app.xaml.cs tiene el siguiente código

    public App()
    {
        UnhandledException += Application_UnhandledException;

        InitializeComponent();

        InitializePhoneApplication();

        RootFrame.Navigating += new NavigatingCancelEventHandler(RootFrame_Navigating);            if (System.Diagnostics.Debugger.IsAttached)
        {
            Application.Current.Host.Settings.EnableFrameRateCounter = true;

            PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
        }
    }

He usado RootFrame_Navigating () para verificar si necesito ir a la página principal o a la página de inicio de sesión.

    void RootFrame_Navigating(object sender, NavigatingCancelEventArgs e)
    {
        //throw new NotImplementedException();
        if (e.Uri.ToString().Contains("/RootPage.xaml") != true)
            return;

        CycleManager pCycMan = CycleManager.instance;

        e.Cancel = true;
        RootFrame.Dispatcher.BeginInvoke(delegate
        {
            if (pCycMan.GetPasswordEnabled())
                RootFrame.Navigate(new Uri("/PasswordPage.xaml", UriKind.Relative));
            else
                RootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        });
    }

Esperaba que la instancia de Cyclemanager se creara cuando se llama una instancia dentro del RootFrame_Navigating ()

Pero la depuración me mostró que JUS después del constructor App (), el flujo de control se mueve a la clase de Administrador de ciclo y después del constructor Cyclemanager () se mueve al marco de rootframe_navigating. ¡! ¿Hay algo mal o lo he entendido mal?

La segunda cosa es que al ejecutar CycleManager pCycMan = CycleManager.instance; Esperaba que se llame el siguiente código en el Cyclemanager, pero sorprendentemente no lo es. Entonces, ¿cómo se administra la propiedad de Singleton? ¿O cada vez que se crea un nuevo OBJ?

    public static CycleManager Instance
    {
        get
        {
            return instance;
        }

    }

Alfá

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top