如何获得WPF的启动画面参考?

时间:2017-09-08 13:49:25

标签: c# .net wpf vb.net splash-screen

WPF允许您按adding an image file to your project and setting its build property to SplashScreen创建初始屏幕。关于此功能的优点(与滚动我自己的启动画面相反)是在WPF应用程序启动时(在旧机器上可能需要花费大量时间),启动画面会立即显示

是否可以在运行时获得对此启动画面的引用?有SplashScreen class但不幸的是,它没有静态的"当前"方法或类似的东西。

对底层启动画面窗口(Window instance或甚至只是底层的Windows API窗口句柄)的任何类型的引用对我来说都没问题。

后台:如果应用程序的主窗口关闭且启动画面仍然可见,那么bug in WPF会导致应用程序崩溃。错误won't be fixed,所以我需要通过保持我的应用程序“活着”来解决这个问题。直到闪屏消失。我目前通过Thread.Sleep(2000) - 在我的主窗口Closing事件中执行此操作,但这很丑陋且不可靠。我宁愿等待(仅),直到启动画面窗口消失。

1 个答案:

答案 0 :(得分:2)

您可以在SplashScreen OnStartup课程的App方法或构造函数中自行显示和关闭App.xaml.cs

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    SplashScreen splashScreen = new SplashScreen("splash.png");
    splashScreen.Show(false);

    //init your main window here...

    splashScreen.Close(TimeSpan.FromSeconds(1));
}

然后,您应该能够控制启动画面和应用程序的生命周期。