Question

Mon application a une classe singleton appelée CycleManager. J'ai créé une classe scellée à cet effet comme celle-ci

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

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

    public static CycleManager Instance
    {
        get
        {
            return instance;
        }

    }
}

Et l'application.xaml.cs a le code suivant

    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;
        }
    }

J'ai utilisé le rootframe_navigating () pour vérifier si je dois aller sur la page principale ou la page de connexion.

    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));
        });
    }

Je m'attendais à ce que l'instance CycleManager soit créée lorsqu'une instance est appelée à l'intérieur du rootframe_navigation ()

Mais le débogage m'a montré que jus après la constituteur app (), le flux de contrôle se déplace vers la classe du gestionnaire de cycle et après le constructeur CycleManager (), il se déplace vers le rootframe_navigation. !! Y a-t-il quelque chose qui ne va pas ou je l'ai mal compris?

La deuxième chose est que lors de l'exécution de CycleManager pCycMan = CycleManager.instance; Je m'attendais à ce que le code suivant dans le cyclemanager soit appelé mais il ne l'est pas surprenant. Alors comment la propriété Singleton a-t-elle réussi? Ou chaque fois qu'un nouvel OBJ est créé?

    public static CycleManager Instance
    {
        get
        {
            return instance;
        }

    }

Alfah

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top