我有一个WPF MVVM应用程序,其中第一个屏幕是登录屏幕,一旦登录成功,它就打开了MainWindow。所以一旦点击进入按钮,我的登录屏幕就会被挂起。我正在使用调度程序线程打开主窗口,因为加载应用程序需要8-10秒。这是我的代码:
登录屏幕的代码输入按钮:
private ICommand _EnterCommand;
public ICommand EnterCommand
{
get
{
return _EnterCommand ?? (_EnterCommand = new DelegateCommand(() =>
{
Thread objThread = new Thread(LoadApplication);
objThread.SetApartmentState(ApartmentState.STA);
objThread.Start();
}));
}
}
在线程上打开主窗口的代码(这里显示进度是显示忙指示符):
public void LoadApplication()
{
ShowProgress = true;
if (isAuthenticatedUser = GetSSOToken())
{
var dispatcher = Application.Current.Dispatcher;
dispatcher.Invoke(new Action(() =>
{
MainWindow objMainWindow = new MainWindow();
objMainWindow.Show();
Application.Current.MainWindow.Close();
}));
}
ShowProgress = false;
}
但是当代码到达下面的步骤
时 MainWindow objMainWindow = new MainWindow();
objMainWindow.Show();
登录屏幕已挂起。
只要未启动主窗口,我就需要保持登录屏幕非常活跃。有什么建议吗?