启动画面显示方法最佳实践C#

我通过在运行主表单之前立即启动新线程来显示启动表单。

在这个线程运行的方法中,我正在使用Application.Run,​​如下面的选项1所示。 这是一个正确的方法,或者是否有问题等我,因为我已经两次调用Application.Run? 另一种选择是选项2,也在下面显示,我调用.ShowDialog()来显示表单。

启动表单本身在指定时间后关闭,在表单本身内控制,并且两个选项似乎都运行良好。

所以我的问题是:哪个更受欢迎 – 选项1还是选项2? 如果你能给出一个或那个很好的具体原因。

谢谢。

主要片段:

// Run splash screen thread. Thread splash = new Thread(new ThreadStart(ShowSplash)); splash.Start(); // Run main application. Application.Run(new MainForm()); 

显示启动表单选项1:

  static void ShowSplash() { Application.Run(new SplashForm()); } 

显示启动表单选项2:

  static void ShowSplash() { using (SplashForm splash = new SplashForm()) { splash.ShowDialog(); } } 

飞溅屏幕等待螺纹完成

看到最多的评价答案

选项2可能会遇到麻烦,因为那时你使用的是与MainForm相同的Mesageloop,但是来自另一个线程。

选项1没问题。

我意识到这可能是一个不寻常的观点,但您是否考虑过不使用启动画面而是在“欢迎页面”或“帮助>关于”屏幕上显示信息?

有几个原因可以做到这一点:

  1. 除非你进入multithreading,否则如果某些警报/ msgbox弹出顶部,则Splash Screen可能无法正确重新绘制,从而完全否定了启动画面的好处。

  2. 显示“你已安装插件x,y和z”的启动画面在加载信息之前无法真正说明这一点。 加载此信息时,您的应用程序已准备就绪,因此您将关闭启动屏幕,否则它将阻碍用户。

  3. 如果我把目光移开并错过了闪屏,我会想念你告诉我的任何信息。 如果“许可证在3天后到期”是该信息的一部分,今天是星期五,这意味着我不会在星期一意识到,我无法使用该应用程序。 模糊不清,但我已经看过了。