当我关闭启动画面时 WPF 应用程序关闭

我想在一个新线程中向我的 WPF 应用程序添加一个启动画面(因为我的动画启动画面在加载主窗口的数据时挂起)。代码:


SplashScreenWindow splashScreenWindow = null;

Thread newWindowThread = new Thread(() =>

{

    splashScreenWindow = new SplashScreenWindow();

    splashScreenWindow.ShowDialog();

});

newWindowThread.SetApartmentState(ApartmentState.STA);

newWindowThread.IsBackground = true;

newWindowThread.Start();


   data loading...


_mainWindow.Show();

splashScreenWindow.Close();

我的问题是当我关闭启动画面时程序会关闭。


斯蒂芬大帝
浏览 162回答 2
2回答

沧海一幻觉

我做过类似的事情,这对我有用。SplashScreenWindow splashScreenWindow = null;Thread newWindowThread = new Thread(() =>{    splashScreenWindow = new SplashScreenWindow();    splashScreenWindow.Show();    System.Windows.Threading.Dispatcher.Run();});newWindowThread.SetApartmentState(ApartmentState.STA);newWindowThread.IsBackground = true;newWindowThread.Start();data loading..._mainWindow.Show();您过早地调用关闭,从主窗口 Loaded 事件调用 splashScreenWindow.Close() 。_mainWindow.Loaded += (s,ev) => { splashScreenWindow.Dispatcher.Invoke(new Action(.splashScreenWindow.Close));};

慕工程0101907

因为.Show()不是阻塞调用,这意味着无论窗口实际关闭它都会返回,因此应用程序很可能会运行到最后。使用.ShowDialog().确保在调用之前关闭启动画面。
打开App,查看更多内容
随时随地看视频慕课网APP