【发布时间】:2012-01-19 14:01:51
【问题描述】:
我的应用有一个名为 CycleManager 的单例类。我为此创建了一个密封类,就像这样
public sealed class CycleManager
{
public static readonly CycleManager instance = new CycleManager();
public CycleManager()
{
//ReadFromIsolatedStorage();
}
public static CycleManager Instance
{
get
{
return instance;
}
}
}
而 App.xaml.cs 有如下代码
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;
}
}
我已经使用 RootFrame_Navigating() 来检查我是否需要转到主页或登录页面。
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));
});
}
我原以为在 RootFrame_Navigating() 中调用实例时会创建 Cyclemanager 实例
但调试告诉我,在 App() 构造函数之后,控制流移动到 Cycle 管理器类,在 CycleManager() 构造函数之后,它移动到 RootFrame_Navigating。 !!有什么不对还是我理解错了?
第二件事是在执行CycleManager pCycMan = CycleManager.instance; 时,我预计 CycleManager 中的以下代码会被调用,但令人惊讶的是它没有。那么单例属性是如何管理的呢?还是每次创建新的 obj 时?
public static CycleManager Instance
{
get
{
return instance;
}
}
阿尔法
【问题讨论】:
-
CycleManager pCycMan = CycleManager.instance;你的意思是CycleManager.Instance吗?
标签: windows-phone-7 navigation singleton app.xaml