代码之家  ›  专栏  ›  技术社区  ›  Andy

闪屏显示方法最佳实践C#

  •  7
  • Andy  · 技术社区  · 15 年前

    在运行主窗体之前,我立即启动一个新线程来显示一个启动窗体。

    在这个线程运行的方法中,我使用的是Application.run,如下面的选项1所示。这是一种正确的方法,还是因为我调用了Application.Run两次而出现了问题?另一种选择是选项2,如下所示,我在其中调用.ShowDialog()来显示表单。

    启动窗体本身在指定的时间后关闭,并在窗体本身内进行控制,这两个选项似乎都工作正常。

    所以我的问题是:选择1还是选择2?如果你能给出其中一个的具体原因,那就太好了。

    Main的代码片段:

    // 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();
            }
        }
    
    3 回复  |  直到 15 年前
        1
  •  3
  •   Henk Holterman    15 年前

    选项2可能会遇到问题,因为您使用的是与MainForm相同的Mesageloop,但来自另一个线程。

    选择1是好的。

        2
  •  1
  •   JBRWilkinson    15 年前

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

    这样做有几个原因:

    1. 除非您进入多线程,否则如果启动屏幕顶部弹出一些alert/msgbox,启动屏幕可能无法正确重新绘制,从而完全否定启动屏幕的好处。

    2. 显示“您安装了插件x、y和z”的启动屏幕在信息加载之前无法真正显示这一点。加载此信息时,您的应用程序已准备就绪,因此您可以关闭启动屏幕,也可以阻止用户。