1

我有一个 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();

登录屏幕挂起。

只要未启动主窗口,我就需要保持登录屏幕非常活跃。对此有什么建议吗?

4

0 回答 0