2012-02-14 208 views
1

我实际上尝试添加一个启动屏幕到我的WPF应用程序。这是很容易:初始屏幕计时器

SplashScreen s = new SplashScreen("/Images/Agrar.png"); 
s.Show(true); 

我的问题是,我想要的开机画面显示约10秒,但我的应用doesn't需要这么长时间来加载。

所以我想到了Timer类,并尝试了一下,但我不知道如何将它与Splash Screen结合起来。 有更好的解决方案吗?它如何与Timer一起工作?因为我没有找到可以说的选项,所以在Timer运行时应该发生什么。

+1

为什么你不必要的强制启动屏幕的用户? – 2012-02-14 15:43:59

+0

它应该是一种广告...... – user896692 2012-02-14 15:44:40

+0

“我想让闪屏显示10秒” - >你确定你确实想要这样做吗?没有什么比应用程序启动时更让人烦恼的是闪屏 – ken2k 2012-02-14 15:46:31

回答

0

你可以尝试把你的主线程,10秒入睡(如果溅可见,用户无论如何也不会用你的应用程序),或淡出飞溅在一段时间:

SplashScreen splash = new SplashScreen("/Images/Agrar.png"); 
    splash.Show(false); 
    Thread.Sleep(10000); 
    splash.Close(TimeSpan.FromSeconds(20)); //fade out over 20 seconds 
+1

我真的不认为'Thread.Sleep'是一个好主意......显示启动画面已经很麻烦,但是如果你用“Thread.Sleep”“锁定”你的应用程序,那么它甚至不能做一些有用的工作,比如在后台加载资源,同时烦恼用户...> ___ < – ken2k 2012-02-14 16:37:53

+0

Task.Delay是Thread.Sleep的首选替代方案,因为它是异步的并且不会阻塞UI。 – Sheridan 2014-06-19 08:46:09

0

最好的方法和使用API​​是

SplashScreen splash = new SplashScreen("splashscreen.jpg"); 
    splash.Show(false); 
    splash.Close(TimeSpan.FromMilliseconds(2)); 
    InitializeComponent();