我有一个 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();
登录屏幕挂起。
只要未启动主窗口,我就需要保持登录屏幕非常活跃。对此有什么建议吗?