为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
斯蒂芬大帝 2021-11-14 14:43:36
我想在一个新线程中向我的 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();我的问题是当我关闭启动画面时程序会关闭。
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

我做过类似的事情,这对我有用。


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));

};


查看完整回答
反对 回复 2021-11-14
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

因为.Show()不是阻塞调用,这意味着无论窗口实际关闭它都会返回,因此应用程序很可能会运行到最后。

使用.ShowDialog().

确保在调用之前关闭启动画面。


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信